static int findLower(int n){
		if(lower[n]!=0) return lower[n];
		else{
			int l = Integer.toBinaryString(n).length();
			for(int i=0;i<l;i++){
				int mask = 1 << i;
				if((n & mask) > 0){
					lower[n] = mask;
					return mask;
				}
			}
			return -1;
		}
	}