public void run() { // run method for Graph		
		// stops after 5 changes
		int runCount = 0;
		while (! isEmpty() && runCount<5) {
			Random rand2 = new Random(); int nextFunction = rand2.nextInt(4);
			// 3/4 chance the government will add a new road, 1/4 chance it will restructure graph (delete road not in min span tree)
			if (nextFunction < 2) {	// chooses random villages within graph
				Random rand = new Random();
				int v = rand.nextInt(length), count=0;
				Village vill = getFirst();
				for (int i=0; i<length; i++) {
					if (count != v) {vill = vill.getNext(); count++; }
				}
				
				Village vill2 = getFirst();
				for (int i=0; i<length; i++) {
					if (count != v) {vill2 = vill2.getNext(); count++;}
				}
				
				if (!vill.equals(vill2)) {roadProposal(vill, vill2);} // if it happens upon the same village, just waits one cycle
			} else {restructure();}
			runCount++;
			try {
				Thread.sleep(4000);
			} catch (InterruptedException e) {
				System.out.println("The system was interrupted.");
			}
		}
	} // end of run()