public static long inverseModulo(long a, long m) {
		long m0=m;
		long a0=a;
		long t0=0;
		long t=1;
		long q=m0/a0;
		long r=m0-q*a0;
		long temp;
		while(r>0) {
			temp=t0-q*t;
			if(temp>=0) {
				temp=temp%m;
			}
			else {
				temp=m-((-temp)%m);
			}
			t0=t;
			t=temp;
			m0=a0;
			a0=r;
			q=m0/a0;
			r=m0-q*a0;
		}
		if(a0==1) {
			return t; 
		}
		else {
			return -1;
		}
	}