public static boolean cycleMouse() {
		Stack<Point> s = new Stack<Point>();
		boolean[] visit = new boolean[n + 1];
		s.push(new Point(hmouse, 1));
		visit[hmouse] = true;
		while (!s.isEmpty()) {
			Point cur = s.pop();
			visit[cur.x] = false;
			if (cur.x == hmouse && cur.y >= 2)
				return true;
			for (int i = 0; i < gmouse[cur.x].size(); i++) {
				int neigh = gmouse[cur.x].get(i);
				if (!visit[neigh] && !vcat[neigh]) {
					visit[neigh] = true;
					s.push(new Point(neigh, cur.y + 1));
				}
			}
		}
		return false;
	}