short[] findY2(short t1Index, short t2Index, short t3Index, short t4Index){
		short stopBefore = mod(t1Index - 1);
		short pathT4Index = path[t4Index];
		
		short start = mod(t3Index + 2);
		int numLoops = Math.min(mod(stopBefore - start), LIMIT);
		if(numLoops == 0){
			return null;
		}
		short t5Index = mod(start + random.nextInt(numLoops));
		
		for(int i = 0; i < numLoops; i++){
//			visualizer.highlightLoose(5, path[y2.fromIndex], path[y2.toIndex]);
//			visualizer.sleep();
			y2Dist = dist(pathT4Index,path[t5Index]);
			if(simAnneal(x1Dist + x2Dist, y1Dist + y2Dist)){
				short[] newPath = findX3Y3(t1Index, t2Index, t3Index, t4Index, t5Index);
//				visualizer.dehighlight(2);
//				visualizer.dehighlight(6);
//				visualizer.sleep();
				if(newPath != null){
//					visualizer.setPath(newPath);
					return newPath; //Next step success
				}
			}
			t5Index = mod(t5Index + 1);
			if(t5Index == stopBefore){
				t5Index = start;
			}
		}
		return null; //This step failed
	}