Задача №113254. Раздели массив

Лавруша~--- добросовестный ученик, который мечтает стать программистом. На последнем уроке информатики его любимая учительница предложила ему решить такую задачу.

Лавруше дана последовательность натуральных чисел \(a_1,\ldots, a_n\). Ему нужно разделить последовательность чисел \(1,2,3, \ldots, n\) на две последовательности \(b_1, \ldots, b_m\) и \(c_1, \ldots, c_k\) таким образом, чтобы:

1. Каждое натуральное число \(1 \le r \le n\) было элементом ровно одной из последовательностей \(b\) или \(c\).

2. Для каждой пары индексов \(1 \le i, j \le m, i \ne j\) числа \(a_{b_i}\) и \(a_{b_j}\) были взаимно простыми. Взаимно простыми называются числа, наибольший общий делитель которых равен единице.

3. Для каждой пары индексов \(1 \le i, j \le k, i \ne j\) числа \(a_{c_i}\) и \(a_{c_j}\) были взаимно простыми.

Разбиение последовательности может быть неоднозначно. Поэтому учительница попросила Лаврушу найти такое разбиение, чтобы оно максимизировало количество элементов в последовательности \(b_i\). Если существует несколько разбиений, которые максимизируют количество элементов в последовательности \(b_i\), то нужно найти среди них такое, чтобы последовательность \(b_i\) была лексикографически наименьшей.

Будем говорить, что последовательность \(q_1, q_2, \ldots, q_W\) является лексикографически меньше последовательности \(p_1, p_2, \ldots, p_W\), если существует такое \(i\), что \(q_i < p_i\), а для произвольного \(j < i\) выполняется \(p_j = q_j\).

Напишите программу, которая для заданной последовательности чисел \(a\) найдет оптимальное разбиение последовательности цифр \(1,2,3, \ldots, n\) на две последовательности \(b_1, \ldots, b_m\) и \(c_1, \ldots, c_k\).

Входные данные

В первой строке входного файла записано число \(z\) (\(1 \le z \le 3\))~--- количество примеров тестовых входных данных (учительница несколько раз предлагала Лавруше решить эту задачу для различных примеров входных данных). Далее приводится \(z\) примеров тестовых входных данных в таком формате: в первой строке входных данных содержится число \(n\) (\(1 \le n \le 100\,000\))~--- количество элементов в последовательности \(a\). В следующей строке записано \(n\) чисел, разделенных единичными пробелами,~--- элементы последовательности \(a\) (\(1 \le a_i \le 2 \times 10^6\)).

Выходные данные

Для каждого примера тестовых входных данных выведите в выходной файл в одной строке число \(m\)~--- количество элементов в последовательности \(b\), а во втором~--- \(m\) натуральных чисел в порядке возрастания номера элементов последовательности \(a\), вошедшие в последовательности \(b\). Если так случится, что учительница ошиблась, и не существует ни одного разбиения последовательности \(a\), то выведите в единственной строке \(-1\).

Система оценки

Тесты состоят из четырёх групп:

1. \(n \le 15, 1 \le a_i \le 2 \times 10^6\) (\(24\) балла).

2. \(n \le 1000, 1 \le a_i \le 2 \times 10^6\) (\(24\) балла).

3. \(n \le 20\,000, 1 \le a_i \le 2 \times 10^6\) (\(30\) баллов).

4. \(n \le 100\,000, 1 \le a_i \le 2 \times 10^6\) (\(22\) балла).

Примеры
Входные данные
2
5
1 2 3 4 5
5
2 3 4 5 6
Выходные данные
4
1 2 3 5 
-1
Сдать: для сдачи задач необходимо войти в систему