public int optimize(int start, int[] sectors) {
		this.func(this);
		
		List<Integer> list = new ArrayList<Integer>();

		List<Integer> list2 = new LinkedList<Integer>();

		for (int i : sectors) {
			list.add(i);
		}
		// 開始地点と同じやつがあったら消しておく
		for (int i = 0; i < list.size(); i++) {
			if (start == list.get(i)) {
				list.remove(i);
				break;
			}
		}
		// この時点で空なら0
		if (list.isEmpty()) {
			return 0;
		}
		// 最初に進むインデックスを取得する、一番近いのが２つあるかもしれないので
		int[] first = { -1, -1 };
		int minKyori = 101;
		for (int i = 0; i < list.size(); i++) {
			int target = list.get(i);
			int kyori = getKyori(start, target);
			if (minKyori > kyori) {
				minKyori = kyori;
				first[0] = i;
				first[1] = -1;
			} else if (minKyori == kyori) {
				first[1] = i;
			}
		}
		List<Integer> temp = new ArrayList<Integer>();
		for (int i : list) {
			temp.add(i);
		}
		int ans = kyori(temp, start, first[0]);
		if (first[1] >= 0) {
			ans = Math.min(ans, kyori(list, start, first[1]));
		}
		return ans;
	}