public BitSet insertMtoN(BitSet M, BitSet N, int i, int j){
		// clear the j -> i in N;
		N.set(i, j, false);
		
		// shift m to left by i;
		BitSet shiftedM = new BitSet(32);
		shiftedM.clear();
		for(int start = i; start <32; start ++ ){
			//System.out.println("shiftedM["+start+"]="+"M["+(start-i)+"]:"+M.get(start-i));
			shiftedM.set(start,M.get(start-i));
		}
		//System.out.println("shiftedM="+shiftedM.toString());
		
		// OR both
		shiftedM.or(N);
		return shiftedM;
	}