long(a,b)={ a=eval(Vec(a)); b=eval(Vec(b)); my(c=vector(#a+#b),carry=0); for(i=1,#a, for(j=1,#b, c[i+j]+=a[i]*b[j] ) ); forstep(i=#c,1,-1, c[i] += carry; carry = c[i] \ 10; c[i] = c[i] % 10 ); for(i=1,#c, if(c[i], return(concat(apply(s->Str(s),vector(#c+1-i,j,c[i+j-1]))))) ); "0" }; long("18446744073709551616","18446744073709551616")