private static BigInteger fac(int n) {
		if(n<0) throw new IllegalArgumentException();
		if(n==0) return BigInteger.ZERO;
		BigInteger ret=new BigInteger("1",10);
		for(int i=2;i<=n;i++){
			ret=ret.multiply(new BigInteger(i+"",10));
		}
		return ret;
	}