public static void dfsNQueens(int x, int n, ArrayList<Integer> list) {
        if (x == n) {
            sum += 1;
        } else {
            for (int i = 1; i <= n; i++) {
                int tmpx = x + 1;
                int tmpy = i;
                boolean flag = true;

                for (int j = 0; j < list.size(); j++) {
                    if (list.get(j) == tmpy
                            || (Math.abs(tmpy - list.get(j)) == Math.abs(tmpx - j - 1))) {
                        flag = false;
                        break;
                    }
                }

                if (flag) {
                    list.add(tmpy);
                    dfsNQueens(tmpx, n, list);
                    list.remove(list.size() - 1);
                }
            }
        }
    }