Tập đơn giản

Đề bài

Mô tả

Cho dãy n số nguyên dương a1,a2,,an (các phần tử có thể trùng nhau).

Một tập con {x1,x2,,xk} của dãy được gọi là tập đơn giản nếu với mọi cặp chỉ số 1i<jk, tổng xi+xj là một số nguyên tố.

Tập con ở đây là một bộ phần tử (multiset) thu được bằng cách xóa đi một số phần tử của dãy gốc (có thể không xóa hoặc xóa hết). Khi cùng một giá trị xuất hiện nhiều lần trong dãy gốc, bạn có thể dùng nó nhiều lần trong tập con, nhưng không vượt quá số lần xuất hiện trong dãy.

Hãy tìm một tập đơn giản có kích thước lớn nhất.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — kích thước của dãy.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an — các phần tử của dãy.

Dữ liệu ra

  • Dòng đầu in ra số nguyên m — kích thước lớn nhất có thể của một tập đơn giản.
  • Dòng thứ hai in ra m số nguyên — các phần tử của tập đơn giản đó.

Nếu có nhiều đáp án thỏa mãn, in ra bất kỳ đáp án nào. Các phần tử có thể in theo thứ tự bất kỳ.

Ràng buộc

  • 1n1000
  • 1ai106

Ví dụ

Input Output Giải thích
2
2 3
2
2 3
2+3=5 là số nguyên tố, lấy cả hai phần tử.
2
2 2
1
2
2+2=4 không phải số nguyên tố, chỉ chọn được một phần tử.
3
2 1 1
3
1 1 2
1+1=2, 1+2=3 đều là số nguyên tố nên lấy được cả ba phần tử.
2
83 14
2
83 14
83+14=97 là số nguyên tố.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0