@Override
	public void write(DataOutputStream dos) {
		// TODO Auto-generated method stub
		/*
		 * 	public long L, U;
			public String r = "something";
			public String[][] GvalueU, GvalueL;
			public int[][] valueU, valueL;
			public long v;
			public int base, m;
		 * */
		try {
			dos.writeLong(L);
			dos.writeLong(U);
			dos.writeLong(v);
			dos.writeInt(base);
			dos.writeInt(MHTree.length);
			//System.out.println("m:\t" + m + " MHTree:\t" + MHTree.length);
			dos.writeInt(whichSide);
			for(int i = 0; i < MHTree.length; i++){
				IO.writeBytes(dos, MHTree[i]);
			}
			for(int i = 0 ; i <= m; i++){
				for(int j = 0; j <= m; j++){
					dos.writeInt(valueL[i][j]);
					dos.writeInt(valueU[i][j]);
				}
				if(GvalueL[i] != null){
					dos.writeBoolean(true);
					for(int j = 0; j <= m; j++){
						IO.writeBytes(dos, GvalueL[i][j]);
					}
				}else{
					dos.writeBoolean(false);
				}
				if(GvalueU[i] != null){
					dos.writeBoolean(true);
					for(int j = 0; j <= m; j++){
						IO.writeBytes(dos, GvalueU[i][j]);
//						System.out.println(GvalueU[i][j].length);
					}
				}else{
					dos.writeBoolean(false);
				}
				IO.writeBytes(dos, GvalueLs[i]);
				IO.writeBytes(dos, GvalueUs[i]);
			}
			//dos.writeInt(m);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}