short[] findY1(short t1Index, short t2Index){
		short pathT2Index = path[t2Index];
		x1Dist = dist(pathT2Index, path[t1Index]);
		
		short stopBefore = mod(t1Index - 2);
		short start = mod(t2Index + 2);
		int numLoops = Math.min(mod(stopBefore - start), LIMIT);
		short t3Index = mod(start + random.nextInt(numLoops));
		
		for(int i = 0; i < numLoops; i++){
//			visualizer.highlightLoose(4, path[y1.fromIndex], path[y1.toIndex]);
//			visualizer.sleep();
			y1Dist = dist(pathT2Index,path[t3Index]);
			if(simAnneal(x1Dist, y1Dist)){
				short[] newPath = findX2(t1Index, t2Index, t3Index); 
//				visualizer.dehighlight(1);
//				visualizer.sleep();
				if(newPath != null){
//					visualizer.setPath(newPath);
					return newPath; //Next step success
				}
			}
			t3Index = mod(t3Index + 1);
			if(t3Index == stopBefore){
				t3Index = start;
			}
		}
		return null; //This step failed
	}