public static void DFS(int node, int used, int parent, String path) {
		if (path.length() / 2 == size)
			ans.add(path.trim());
		else {
			Stack<Integer> change = new Stack<Integer>();
			for (int i = 0; i < ady[node].size(); i++) {
				int neigh = ady[node].get(i);
				if (check(used, neigh)) {
					if (parents[neigh] == 1)
						parent |= (1 << neigh);
					else {
						change.push(neigh);
						parents[neigh]--;
					}
				}
			}
			for (int i = 1; i <= size; i++)
				if (check(used, i) && !check(parent, i)) {
					parents[i]--;
					DFS(i, used | (1 << i), parent | (1 << i), map2[i] + " "
							+ path);
					parents[i]++;
				}
			while (!change.isEmpty())
				parents[change.pop()]++;
		}
	}