RT
代码如下:
//rng_58 bless me
#include<bits/stdc++.h>
using namespace std;
//fast io:
inline int read() {
int s = 0,f = 1;
char ch = getchar();
while(ch < '0' || ch > '9'){
if(ch == '-') {
f = -1;
}
ch = getchar();
}
while(ch >= '0' && ch <= '9') {
s = s * 10 + ch - '0';
ch = getchar();
}
return s * f;
}
inline void write(int x) {
if(x < 0) {
putchar('-');
x = -x;
}
if(x > 9) {
write(x / 10);
}
putchar(x % 10 + '0');
}
//define:
#define REP(i,n) for(int i = 0; i < n; i++)
//const:
const int MAXN = 30;
//something:
int a[MAXN];
int N;
vector <int> v;
int p[MAXN];
bool vis[MAXN];
void iint() {
for(int i = 2;i < 100;i++) {
if(!p[i]) {
for(int j = i * i;j <= 100;j += i) {
p[j] = 1;
}
}
}
p[1] = 1;
memset(vis,0,sizeof vis);
}
bool isp(int x) {
return !p[x];
}
inline void dfs() {
if(v.size() == N) {
if(isp(v[0] + v[N - 1])) {
putchar('1'); putchar(' ');
REP(i,v.size()) {
write(v[i]); putchar(' ');
}
cout << endl;
}
return;
}
for(int i = 2;i <= N;i++) {
if(isp(i + v[v.size() - 1]) && !vis[i]) {
vis[i] = 1; v.push_back(i);
dfs();
vis[i] = 0; v.pop_back();
}
}
}
//run:
void solve() {
N = read();
iint();
vis[1] = 1;
dfs();
}
//times:
void Times(int T) {
while(T--) {
solve();
}
}
//begin:
int main() {
int T;
T = 1;
//cin >> T;
Times(T);
return 0;
}