short[] findX1(){
		while(temperature > minTemp){
			short t1Index = (short) random.nextInt(path.length);
			boolean equilibrium = false;
			int i = 0;
			double pastLength = 0;
			int numChanges = 0;
			while(!equilibrium && i < LIMIT){
//				visualizer.highlightLoose(0, path[x1.fromIndex], path[x1.toIndex]);
//				visualizer.sleep();
				short[] newPath = findY1(t1Index, mod(t1Index + 1));
//				visualizer.dehighlight(4);
				if(newPath != null){
					path = newPath; //Next step success, but we'll continue improving the path
					if(numChanges % 5 == 0){
						double length = Node.lengthOfPath(path, nodes);
						if(pastLength != 0 && length > pastLength * 0.95){
							equilibrium = true;
						}
						pastLength = length;
					}
					numChanges ++;
//					visualizer.setPath(path); //necessary I think, path is just a pointer.
//					visualizer.sleep();
					t1Index = (short) random.nextInt(path.length);
					i = -1;
				}
				t1Index = mod(t1Index + 1);
				i++;
			}
			if(numChanges < 4){
				break;
			}
			temperature *= tempMultiplier;
		}
		
		visualizer.dehighlight();
		return path;
	}