private HashMap<ArrayList<Integer>, Integer> parseInputFile(String inputFile) {
		
		try {
			HashMap<ArrayList<Integer>, Integer> data = new HashMap<ArrayList<Integer>, Integer>(); 
			// read file input
			BufferedReader in = new BufferedReader (new FileReader(inputFile));
			
			// read the first line to initialize the max and min list
			String line;
			if ( (line=in.readLine()) != null) {
				ArrayList<Integer> points = parseLine(line);

				// put in the data map, with counter=1
				data.put(points, 1);
				
				// first point, put in max and min list
				for (int i=0; i<numDimension; i++) {
					maxList[i]=points.get(i);
					minList[i]=points.get(i);
				}
				
			}

			// continue read for the next data
			while ((line=in.readLine())!=null) {
				ArrayList<Integer> points = parseLine(line);

				// put in the data map, increase the counter
				if ( data.containsKey(points) ) {
					int count = data.get(points);
					data.put(points, count+1);
				} else {
					data.put(points, 1);
				}
				
				// update max and min list
				for (int i=0; i<numDimension; i++) {
					if ( points.get(i) > maxList[i] ) {
						maxList[i] = points.get(i);
					} else 					
					if ( points.get(i) < minList[i] ) {
						minList[i] = points.get(i);		
					}
				}			
			}
			in.close();
			
			return data;
			
		} catch (IOException e) {
			e.printStackTrace();
		} 
			
		// if there is something fail
		return null;
	}