Codeforces 665D. Simple Subset

time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

A tuple of positive integers {x1, x2, ..., xk} is called simple if for all pairs of positive integers (i,  j) (1  ≤ i  <  j ≤ k), xi  +  xj is a prime.

You are given an array a with n positive integers a1,  a2,  ...,  an (not necessary distinct). You want to find a simple subset of the array a with the maximum size.

A prime number (or a prime) is a natural number greater than 1 that has no positive divisors other than 1 and itself.

Let's define a subset of the array a as a tuple that can be obtained from a by removing some (possibly all) elements of it.

Input

The first line contains integer n (1 ≤ n ≤ 1000) — the number of integers in the array a.

The second line contains n integers ai (1 ≤ ai ≤ 106) — the elements of the array a.

Output

On the first line print integer m — the maximum possible size of simple subset of a.

On the second line print m integers bl — the elements of the simple subset of the array a with the maximum size.

If there is more than one solution you can print any of them. You can print the elements of the subset in any order.

Examples

Input
2
2 3
Output
2
3 2
Input
2
2 2
Output
1
2
Input
3
2 1 1
Output
3
1 1 2
Input
2
83 14
Output
2
14 83

题解

       It has been a long day from my last blog. 人生莫名其妙地改变了轨迹……总之又开始做一些题了。今后的文章大多都并不是为了提供题解而写,而是为了提醒自己一些写法、算法、数据结构之类的,可能经过数次修改,并不漂亮而且可能有并不恰当的地方。

      这道题其实脑补数学规律挺简单的,但之后的判定挺麻烦的。复习了素数筛法和二分。

#include
#include
#include
#include
#include
#include
using namespace std;
int n,a[1005],ct,pri[200002],mn[2000002],zz,ji,ou;
void init()
{
	scanf("%d",&n);
	int i;
	for(i=1;i<=n;i++){
		scanf("%d",&a[i]);
		if(a[i]==1) ct++;
		else if(a[i]%2==1) ji++;
		else ou++;
		}
}
void prime()
{
	int i,j;
	for(i=2;i<=2000000;i++){
		if(!mn[i]) {pri[++zz]=i; mn[i]=i;}
	    for(j=1;j<=zz,pri[j]*i<=2000000;j++){
			mn[pri[j]*i]=pri[j];
			if(i%pri[j]==0) break;
			}
	   }
}
bool check(int x)
{
	int l=1,r=zz,mid;
	while(l>1;
		if(pri[mid]


你可能感兴趣的:(数论)