gap> p:=101; 101 gap> g:=PrimitiveRootMod(101); 2 gap> h:=PowerMod(2,73,p); 48 gap> PowerMod(g,4,p); # order 25 part 16 gap> PowerMod(h,4,p); 58 gap> PowerMod(16,5,p); # Hensel 95 gap> PowerMod(58,5,p); 87 gap> giant:=List([0..2],x->PowerMod(95,x*2,p)); [ 1, 36, 84 ] gap> baby:=List([0..2],x->PowerMod(95,-x,p)*87 mod p); [ 87, 36, 95 ] gap> e0:=1*2+1; gap> PowerMod(95,3,p); 87 gap> 58/PowerMod(16,3,p) mod p; # step 2 84 gap> OrderMod(84,p); 5 gap> baby:=List([0..2],x->PowerMod(95,-x,p)*84 mod p); [ 84, 87, 36 ] gap> e1:=4; 4 gap> e25:=e0+e1*5; 23 gap> PowerMod(16,e25,p); 58 gap> PowerMod(g,25,p); 10 gap> PowerMod(h,25,p); 10 gap> ChineseRem([4,25],[1,23]); 73