public static boolean check(Clue c, int n) {
		v1 = v2 = 0;
		int num[] = nums[n], equal = 0, semi = 0;
		for (int i = 0; i < num.length; i++)
			if (num[i] == c.num[i]) {
				v1 |= (1 << i);
				v2 |= (1 << i);
				equal++;
			}
		if (equal != c.equal)
			return false;
		for (int i = 0; i < c.num.length; i++) {
			if ((v1 & (1 << i)) == 0)
				for (int j = 0; j < num.length; j++) {
					if (i != j && c.num[i] == num[j] && (v2 & (1 << j)) == 0) {
						semi++;
						// isEq[c.num[i]] = isEq[num[j]] = true;
						v1 |= (1 << i);
						v2 |= (1 << j);
						break;
					}
				}
		}
		return semi == c.semi;
	}