private static ArrayList<Student> FindCheaters(ArrayList<Student> students, int left, int right, ArrayList<Student> twolowest) {
		// If there is more than one student.
		if (right - left == 1) {
			Student studentOne;
			Student studentTwo;
			if (twolowest.size() == 0) {
				studentOne = students.get(left);
				studentTwo = students.get(right);
				twolowest.add(studentOne);
				twolowest.add(studentTwo);
			} else {
				studentOne = twolowest.get(0);
				studentTwo = twolowest.get(1);
			}
			// Set Alpha values to max levels
			double alphaFact = Math.sqrt(Math.pow(studentOne.exam1Grade - studentTwo.exam1Grade, 2) + Math.pow(studentOne.exam2Grade - studentTwo.exam2Grade, 2));

			for (int i = left + 1; i < students.size(); i++) {
				Student One = students.get(left);
				Student Two = students.get(i);
				// Calculate Alphas between two, and take the minimum.
				double temp = Math.sqrt(Math.pow(One.exam1Grade - Two.exam1Grade, 2) + Math.pow(One.exam2Grade - Two.exam2Grade, 2));
				if (temp < alphaFact && !twolowest.get(0).studentId.equals(Two.studentId)) {
					twolowest.remove(1);
					twolowest.add(Two);
					alphaFact = temp;

				}
			}
			// Repeat above for the right.
			for (int i = right + 1; i < students.size(); i++) {
				Student One = students.get(right);
				Student Two = students.get(i);
				double temp = Math.sqrt(Math.pow(One.exam1Grade - Two.exam1Grade, 2) + Math.pow(One.exam2Grade - Two.exam2Grade, 2));

				if (temp < alphaFact && !twolowest.get(0).studentId.equals(One.studentId)) {
					twolowest.remove(0);
					twolowest.add(Two);
					alphaFact = temp;
				}

			}
			// return the minimum.
			return twolowest;
		} else {
			// get the midpoint.
			int mid = (right + left) / 2;
			// Returns alpha scores for sides
			ArrayList<Student> leftsList = FindCheaters(students, left, mid, twolowest);
			ArrayList<Student> rightsList = FindCheaters(students, mid, right, twolowest);

			// Comparisons
			Student leftsListOne = leftsList.get(0);
			Student leftsListTwo = leftsList.get(1);
			Student rightsListOne = rightsList.get(0);
			Student rightsListTwo = rightsList.get(1);

			double alphaLeftOne = Math.sqrt(Math.pow(leftsListOne.exam1Grade - leftsListTwo.exam1Grade, 2) + Math.pow(leftsListOne.exam2Grade - leftsListTwo.exam2Grade, 2));
			double alphaRightTwo = Math.sqrt(Math.pow(rightsListOne.exam1Grade - rightsListTwo.exam1Grade, 2) + Math.pow(rightsListOne.exam2Grade - rightsListTwo.exam2Grade, 2));
			if (alphaLeftOne < alphaRightTwo) {
				return leftsList;
			} else {
				return rightsList;
			}
		}
	}