private void checkRoute(int[] route, int offset){
		
		if(offset == salesman.n){
			count++;
			
			if(count%100000 == 0){
				System.out.println("check route "+count);
			}
			
			double cost = salesman.calculateCosts(route);
			if(minCosts < 0 || cost < minCosts){
				minCosts = cost;
				System.arraycopy(route,0,minRoute,0,route.length);
			}
			
			return;
		}
		
		loop: for(int i = 1;i<salesman.n;i++){
			for(int j = 0;j<offset;j++){
				if(route[j] == i){
					continue loop;
				}
			}
			
			route[offset] = i;
			checkRoute(route,offset+1);
		}
	}