public void readFromFile(DataInputStream dis) throws IOException{
		L = dis.readLong();
		U = dis.readLong();
		v = dis.readLong();
		base = dis.readInt();
		m = (int)(Math.log(U - L) / Math.log(base));
		int len = dis.readInt();
		whichSide = dis.readInt();
		MHTree = new String[len];
		for(int i = 0; i < len ; i++){
			MHTree[i] = DataIO.readString(dis);
		}
		valueL = new int[m + 1][m + 1];
		valueU = new int[m + 1][m + 1];
		GvalueL = new String[m + 1][m + 1];
		GvalueU = new String[m + 1][m + 1];
		GvalueLs = new String[m + 1];
		GvalueUs = new String[m + 1];
		for(int i = 0; i <= m; i ++){
			for(int j = 0; j <= m ; j ++){
				valueL[i][j] = dis.readInt(); // for no using here
				valueU[i][j] = dis.readInt();
			}
			if(dis.readBoolean()){
				for(int j = 0; j <= m; j++){
					//System.out.println(i + "\t" + j);
					GvalueL[i][j] = DataIO.readString(dis);
				}
			}
			if(dis.readBoolean()){
				for(int j = 0; j <= m ;j++){
					GvalueU[i][j] = DataIO.readString(dis);
				}
			}
			GvalueLs[i] = DataIO.readString(dis);
			GvalueUs[i] = DataIO.readString(dis);
		}
	}