public static void main(String[] args) throws IOException {
	if (args.length > 3) {
	    System.err.println(USAGE_MESSAGE);
	    System.exit(1);
	}
	FileInputStream in = new FileInputStream(args[1]);
	Test.copyStream(new ArithCodeInputStream(args.length < 2 ? System.in : new java.io.FileInputStream(args[1]),
						 new PPMModel(args.length < 1 ? 8 : Integer.parseInt(args[0]))),
			args.length < 3 ? (OutputStream) System.out : new FileOutputStream(args[2])); // cast due to ternary whackiness
    }