public static void main(String[] args) {
		String inputGenomeFilePath;
		int kmerLength, kmerOverlapLength, deBruijnGraphDegree;
		if (args.length == 4) {
			inputGenomeFilePath = args[0];
			if(!doesFileExist(inputGenomeFilePath)) {
				System.out.println("Invalid input genome file path!");
				printClosingAppMessage();
				return;
			}
			try {
				kmerLength = parseIntArgument(args[1]);
			}
			catch (Exception e) {
		        System.out.println("Kmer length must be an integer!");
		        printClosingAppMessage();
		        return;
		    }
			try {
				kmerOverlapLength = parseIntArgument(args[2]);
			}
			catch (Exception e) {
		        System.out.println("Kmer overlap length must be an integer!");
		        printClosingAppMessage();
		        return;
		    }
			try {
				deBruijnGraphDegree = parseIntArgument(args[3]);
			}
			catch (Exception e) {
		        System.out.println("Kmer length must be an integer!");
		        printClosingAppMessage();
		        return;
		    }
			
			String inputGenomeSequence = null; 
			String assembledSequence = null;
			try {
				inputGenomeSequence = oneLineFileToString(inputGenomeFilePath);
				assembledSequence = DnaAssembler.assemble(inputGenomeFilePath, kmerLength, kmerOverlapLength, deBruijnGraphDegree);
			} catch (IOException e) {
				handleException(e);
			} catch (MbiException e) {
				handleException(e);
			}
			
			createFileWithText("output.txt", assembledSequence);
			
			StringBuilder logBuilder = new StringBuilder();
			if(inputGenomeSequence.equals(assembledSequence)) {
				logBuilder.append("INPUT equals RESULT");
			}
			else {
				logBuilder.append("INPUT differs from RESULT\n");			
				logBuilder.append("Longest common subsequence length: "
						+ Helpers.longestSubstringLength(inputGenomeSequence, assembledSequence));
				
//				startTime = System.nanoTime();
//				int longestCommonSubstringLength = longestSubstring(inputSequence, resultSequence);
//				Logger.log("longest: " + longestCommonSubstringLength);
//				Logger.logLongestCommonSubstringLength(Integer.toString(longestCommonSubstringLength));
//				elapsedTime = System.nanoTime() - startTime;
//				elapsedTimeInSeconds = (double)elapsedTime / 1000000000.0;
//				Logger.log("longest substring searching", Double.toString(elapsedTimeInSeconds));
			}
			createFileWithText("log.txt", logBuilder.toString());
		}
		else {
			System.out.println("Incorrect number of arguments!");
		}
	}