Петрик і розбиття масиву#7667

Петрик і розбиття масиву

1 секунда
64 мегабайти
Легка

Петрик — сумлінний учень, який мріє стати програмістом. На останньому уроці інформатики його улюблена вчителька запропонувала йому розв'язати таке завдання. Нехай a_1, \ldots, a_N — певна послідовність натуральних чисел. Петрику потрібно розділити послідовність чисел 1, 2, 3, \ldots, N на дві послідовності b_1, \ldots, b_M і c_1, \ldots, c_K таким чином, щоб:

• Кожне натуральне число 1 \leq r \leq N було елементом рівно однієї з послідовностей або (тому M + K = N).

• Для кожної пари індексів 1 \leq i, j \leq M, i \neq j, числа a_{b_i} і a_{b_j} були взаємно простими.

• Для кожної пари індексів 1 \leq i, j \leq K, i \neq j, числа a_{c_i} і a_{c_j} були взаємно простими.

Взаємно простими називаються числа, найбільший спільний дільник яких дорівнює одиниці. Назвемо відповідний поділ послідовності 1, 2, 3, \ldots, N розбиттям послідовності a_i.

Розбиття послідовності може бути неоднозначне. Тому вчителька попросила Петрика знайти таке розбиття, що максимізує кількість елементів у послідовності b_i. Якщо існує кілька розбиттів, що максимізують кількість елементів у послідовності b_i, то потрібно знайти серед них таке, щоб послідовність b_i була лексикографічно найменшою.

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

Напишіть програму, яка для заданої послідовності чисел знайде оптимальне розбиття послідовності чисел 1, 2, 3, \ldots, N на дві послідовності b_1, \ldots, b_M і c_1, \ldots, c_K.

Вхідні дані

У першому рядку вхідних даних записано число (1 \leq Z \leq 3) — кількість тестових вхідних даних (учителька кілька разів пропонувала Петрику розв'язати це завдання для різних вхідних даних).

Далі подаються тестових даних у такому форматі.

У першому рядку даних міститься число (1 \leq N \leq 100\,000) — кількість елементів у послідовності . У наступному рядку записано чисел, розділених одиничними пропусками, — елементи послідовності (1 \leq a_i \leq 2\,000\,000).

Вихідні дані

Для кожних тестових даних виведіть у вихідний файл в одному рядку число — кількість елементів у послідовності , а у другому — натуральних чисел — у порядку зростання номери елементів послідовності , що увійшли до послідовності .

Якщо так трапиться, що вчителька помилилась і не існує жодного розбиття послідовності , то виведіть в одному рядку .

Приклади

Приклад 1

Loading
Loading

Примітка

У першому наборі тестових даних не можна отримати розбиття, де в послідовності містилися б усі елементи 1, 2, \ldots, N, тому що числа і не взаємно прості. А в наступному наборі тестових даних взагалі не існує жодного розбиття послідовності .

Оцінювання

Набір тестів складається з блоків, для кожного з яких виконуються такі умови:

балів: N \leq 15, 1 \leq a_i \leq 2\,000\,000.

балів: N \leq 1000, 1 \leq a_i \leq 2\,000\,000.

балів: N \leq 20\,000, 1 \leq a_i \leq 2\,000\,000.

балів: N \leq 100\,000, 1 \leq a_i \leq 2\,000\,000.