mult(R,Pow,Pow):-R mod 2=:=1,!. mult(_,_,1):-!. mod_pow(N,0,_,_,N):-!. mod_pow(N,R,Pow,Mod,Result):- R1 is R//2, mult(R,Pow,Mult), N1 is (N*Mult) mod Mod, Pow1 is (Pow^2) mod Mod, mod_pow(N1,R1,Pow1,Mod,Result). calc(E):- between(1,1000,N), Mod is 10^10, mod_pow(1,N,N,Mod,E). sum([],Sum,Sum):-!. sum([X|Xs],Sum,Result):- Sum1 is X+Sum, sum(Xs,Sum1,Result). main:-findall(E,calc(E),Es), sum(Es,0,Ans), Ans1 is Ans mod 10^10, write(Ans1).