""" # @Time : 2020/11/25 # @Author : Jimou Chen """ from math import sqrt
n = int(input()) num = [0for _ inrange(n + 1)] flag = [0for _ inrange(n + 1)]
# 判断素数 defprime(x): for i inrange(2, int(sqrt(x)) + 1): if x % i == 0: return0
return1
# x 是当前的数,v是满足条件的前一个数 defdfs(x, v): if x == n + 1: # 判断最后一个数和第一个数之和 if prime(v + 1): for i inrange(1, n + 1): print(num[i], end=' ') print() return# return的位置是和for同一级的
for i inrange(1, n + 1): if flag[i] == 0and prime(i + v): flag[i] = 1 num[x] = i dfs(x + 1, i) flag[i] = 0
''' 优化的话,可以使用素数表,这样就不用每次都遍历判断了 ''' k = 0 # 素数表,1表示素数 defprime_table(x): global k l = [1for _ inrange(x + 1)] for i inrange(2, x + 1): for k inrange(2, int(sqrt(i)) + 1): if i % k == 0: l[i] = 0