
function modmult2(f1,f2,m)
{
	if(m>1000000000000)return modmult3(f1,f2,m);
	f1%=m;f2%=m;
//	var t="MOD("+f1+"*"+f2+","+m+")-";
	var T="";
	var i,j,k;
	var A=String(f1),B=String(f2);
	var L1=A.length,L2=B.length;
	A="000000000000000000000".substr(0,18-L1)+A;
	B="000000000000000000000".substr(0,18-L2)+B;
	var a=new Array(),b=new Array(),q=new Array();
	var i;
	for(i=0;i<9;i++)
	{
		a[i]=Number(A.substring(18-(i+1)*2,18-i*2));
		b[i]=Number(B.substring(18-(i+1)*2,18-i*2));
	}
//	q[0]=1;
//	for(i=1;i<24;i++)q[i]=(q[i-1]*10)%m;
	var s=0,s1=0;
	for(i=0;i<28;i++)
	{
		var TT="";
		s1=0;
		for(j=0;j<9;j++)
		{
			k=i-j;
			if((k<9)&&(k>=0)){s1=(s1+(a[j]*b[k]))%m;/*TT+=" + a"+j+"·b"+k;*/}
		}
		for(j=0;j<i;j++)s1=(s1*100)%m;
		s=(s+s1)%m;
//		T+=" + q"+i+"·("+TT+")";
	}
	return s;
}
function modmult3(f1,f2,m)
{
	f1%=m;f2%=m;
//	var t="MOD("+f1+"*"+f2+","+m+")-";
	var T="";
	var i,j,k;
	var A=String(f1),B=String(f2);
	var L1=A.length,L2=B.length;
	A="000000000000000000000".substr(0,18-L1)+A;
	B="000000000000000000000".substr(0,18-L2)+B;
	var a=new Array(),b=new Array(),q=new Array();
	var i;
	for(i=0;i<16;i++)
	{
		a[i]=Number(A.substring(18-(i+1),18-i));
		b[i]=Number(B.substring(18-(i+1),18-i));
	}
//	q[0]=1;
//	for(i=1;i<24;i++)q[i]=(q[i-1]*10)%m;
	var s=0,s1=0;
	for(i=0;i<28;i++)
	{
		var TT="";
		s1=0;
		for(j=0;j<16;j++)
		{
			k=i-j;
			if((k<16)&&(k>=0)){s1=(s1+(a[j]*b[k]))%m;/*TT+=" + a"+j+"·b"+k;*/}
		}
		for(j=0;j<i;j++)s1=(s1*10)%m;
		s=(s+s1)%m;
//		T+=" + q"+i+"·("+TT+")";
	}
	return s;
}
