public static void main(String[] args) {
	LargePhylip lph = new LargePhylip(new File(args[0]), false);
	LargePhylip lph2 = new LargePhylip(new File(args[1]), false);

	int maxNameLen = Math.max(lph.maxNameLen, lph2.maxNameLen);

	System.out.printf("ret %d\n", lph.maxNameLen);
	LargePhylip lphw = new LargePhylip(new File("/scratch/big.phy"),
		lph.nTaxa + lph2.nTaxa, lph.seqLen, maxNameLen);

	int outptr = 0;
	for (int i = 0; i < lph.nTaxa; i++) {
	    lphw.copy(outptr, lph.recs[i]);
	    outptr++;
	}

	for (int i = 0; i < lph2.nTaxa; i++) {
	    lphw.copy(outptr, lph.recs[i]);
	    outptr++;
	}
	System.out.printf("1st copy done\n");
	System.gc();

	// lph.close();
	// lph2.close();
	// lph = null;
	// lph2 = null;
	// System.out.printf( "freed\n" );
	// System.gc();
	//
	// try {
	// Thread.currentThread().sleep(100000);
	// } catch (InterruptedException e) {
	// // TODO Auto-generated catch block
	// e.printStackTrace();
	// }

	LargePhylip lphw2 = new LargePhylip(new File("/scratch/big2.phy"),
		lphw.nTaxa + lphw.nTaxa, lph.seqLen, maxNameLen);
	outptr = 0;
	for (int i = 0; i < lphw.nTaxa; i++) {
	    lphw2.copy(outptr, lphw.recs[i]);
	    outptr++;
	}

	for (int i = 0; i < lphw.nTaxa; i++) {
	    lphw2.copy(outptr, lphw.recs[i]);
	    outptr++;
	}

	// lph.close();
	// lph2.close();

	// lph = null;
	// lph2 = null;

	LargePhylip lphw3 = new LargePhylip(new File("/scratch/big3.phy"),
		lphw2.nTaxa + lphw2.nTaxa, lph.seqLen, maxNameLen);
	outptr = 0;
	for (int i = 0; i < lphw2.nTaxa; i++) {
	    lphw3.copy(outptr, lphw2.recs[i]);
	    outptr++;
	}

	for (int i = 0; i < lphw2.nTaxa; i++) {
	    lphw3.copy(outptr, lphw2.recs[i]);
	    outptr++;
	}

	LargePhylip lphw4 = new LargePhylip(new File("/scratch/big4.phy"),
		lphw3.nTaxa + lphw3.nTaxa, lph.seqLen, maxNameLen);
	outptr = 0;
	for (int i = 0; i < lphw3.nTaxa; i++) {
	    lphw4.copy(outptr, lphw3.recs[i]);
	    outptr++;
	}

	for (int i = 0; i < lphw3.nTaxa; i++) {
	    lphw4.copy(outptr, lphw3.recs[i]);
	    outptr++;
	}
	System.out.printf("done\n");
	try {
	    Thread.sleep(100000);
	} catch (InterruptedException e) {
	    // TODO Auto-generated catch block
	    e.printStackTrace();
	}
    }