public static void longestIncreasingSubsequenceInPairs(ArrayList<Person> mPersons){
		//This problem is very similar to LIS, except with a twist. We will first sort 
		//according to height, and then perform LIS on the weight
		Collections.sort(mPersons);

		//next we run custom LIS
		int[] sizes = new int[mPersons.size()];
		String[] paths = new String[mPersons.size()];

		//First we init both sizes and paths
		for(int i = 0; i < mPersons.size(); i++){
			sizes[i] = 1;
			paths[i] = "P"+ i + "" + mPersons.get(i).toString() + " ";
		}

		//Then we use dynamic programming to build subsequences
		for(int i = 1; i < mPersons.size(); i++){
			for(int j=0; j<i; j++){
				if(mPersons.get(i).weight > mPersons.get(j).weight && sizes[i] < sizes[j] + 1){
					sizes[i] = sizes[j] + 1;
					paths[i] = paths[j] + "P"+ i + "" + mPersons.get(i).toString() + " ";
				}
			}
		}

		//Finally we print the longest increasing subsequence
		int maxLength = 0, maxIndex = 0;
		for(int i=0; i<sizes.length; i++){
			if(maxLength < sizes[i]){
				maxLength = sizes[i];
				maxIndex = i;
			}
		}
		SOP("LIS: " + paths[maxIndex]);

	}