fork download
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <cmath>
  4. #include <set>
  5. #include <vector>
  6. #include <map>
  7. #include <stack>
  8. #include <cstring>
  9. #include <fstream>
  10. #include <sstream>
  11. #include <numeric>
  12. #include <functional>
  13.  
  14.  
  15. // ___<><><>______<><><>______<><><>______<><><>______<><><>______<><><>______<><><>______<><><>___
  16.  
  17.  
  18. using namespace std;
  19.  
  20.  
  21. // ___<><><>______<><><>______<><><>______<><><>______<><><>______<><><>______<><><>______<><><>___
  22.  
  23.  
  24. // Debugging Template
  25. void __print(int x) {cerr << x;}
  26. void __print(long x) {cerr << x;}
  27. void __print(long long x) {cerr << x;}
  28. void __print(unsigned x) {cerr << x;}
  29. void __print(unsigned long x) {cerr << x;}
  30. void __print(unsigned long long x) {cerr << x;}
  31. void __print(float x) {cerr << x;}
  32. void __print(double x) {cerr << x;}
  33. void __print(long double x) {cerr << x;}
  34. void __print(char x) {cerr << '\'' << x << '\'';}
  35. void __print(const char *x) {cerr << '\"' << x << '\"';}
  36. void __print(const string &x) {cerr << '\"' << x << '\"';}
  37. void __print(bool x) {cerr << (x ? "true" : "false");}
  38.  
  39. template<typename T, typename V>
  40. void __print(const pair<T, V> &x) {cerr << '{'; __print(x.first); cerr << ','; __print(x.second); cerr << '}';}
  41. template<typename T>
  42. void __print(const T &x) {int f = 0; cerr << '{'; for (auto &i: x) cerr << (f++ ? "," : ""), __print(i); cerr << "}";}
  43. void _print() {cerr << "]\n";}
  44. template <typename T, typename... V>
  45. void _print(T t, V... v) {__print(t); if (sizeof...(v)) cerr << ", "; _print(v...);}
  46. #ifndef ONLINE_JUDGE
  47. #define debug(x...) cerr << "[" << #x << "] = ["; _print(x)
  48. #else
  49. #define debug(x...)
  50. #endif
  51. // ___<><><>______<><><>______<><><>______<><><>______<><><>______<><><>______<><><>______<><><>___
  52.  
  53.  
  54. #define rep(i,n) for(int i = 0; i < int(n); i++)
  55. #define REP(i,st,en) for (int i = st; i <= int(en); i++)
  56. #define yes cout << "YES\n"
  57. #define no cout << "NO\n"
  58. #define clr(a, init) memset(a, init, sizeof a)
  59. #define oo (2e9)
  60. #define all(v) ((v).begin()), ((v).end())
  61. #define sz(v) ((int)((v).size()))
  62.  
  63.  
  64. // ___<><><>______<><><>______<><><>______<><><>______<><><>______<><><>______<><><>______<><><>___
  65.  
  66.  
  67. typedef long long ll;
  68. typedef pair<int, int> pii;
  69. typedef pair<ll, int> pli;
  70. typedef pair<ll, ll> pll;
  71. typedef long double ld;
  72. typedef vector<int> vi;
  73.  
  74. // ___<><><>______<><><>______<><><>______<><><>______<><><>______<><><>______<><><>______<><><>___
  75.  
  76.  
  77.  
  78. void file_io();
  79. void PLAY();
  80.  
  81.  
  82.  
  83. ll power(ll b, ll n, ll MOD);
  84. ll findlcm(vector<int> arr, int n);
  85. int gcd(int a, int b);
  86.  
  87. ll max_subarray_sum(vector<int> A);
  88.  
  89.  
  90. // ___<><><>______<><><>______<><><>______<><><>______<><><>______<><><>______<><><>______<><><>___
  91.  
  92. const int N = int(1e7) + 10;
  93. vi prime(N + 1, 1);
  94.  
  95. void sieve(int n) {
  96. prime[0] = prime[1] = 0;
  97. for (int i = 2; i * i <= n; i++) {
  98. if (!prime[i]) continue;
  99. int j = i + i;
  100. while (j <= n) {
  101. prime[j] = 0;
  102. j+=i;
  103. }
  104. }
  105. }
  106.  
  107. int solve(int n) {
  108.  
  109. for(int i = n; i >= 0; i--)
  110. {
  111. if(prime[i])
  112. return i;
  113.  
  114. }
  115. }
  116.  
  117. int main() {
  118. //PLAY();
  119.  
  120. sieve(N);
  121. int n;
  122. while (cin >> n) {
  123. if (n < 8) {
  124. cout << "Impossible.\n";
  125. continue;
  126. }
  127.  
  128. int p1 = solve(n - 6);
  129. n -= p1;
  130. int p2 = solve(n - 4);
  131. n -= p2;
  132. int p3 = solve(n - 2);
  133. n -= p3;
  134. int p4 = n;
  135.  
  136. printf("%d %d %d %d\n", p1, p2, p3, p4);
  137.  
  138. }
  139.  
  140.  
  141. }
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151. void file_io()
  152. {
  153. freopen("input.txt", "r", stdin);
  154. freopen("output.txt", "w", stdout);
  155. }
  156.  
  157.  
  158. void PLAY()
  159. {
  160. ios_base::sync_with_stdio(false);
  161. cin.tie(0), cout.tie(0);
  162. }
  163.  
  164.  
  165.  
  166.  
  167.  
  168. ll max_subarray_sum(vector<int> A) {
  169. int n = A.size();
  170.  
  171. vector<ll> local(n);
  172. ll global = A[0];
  173. local[0] = A[0];
  174.  
  175. for (int i = 1; i < n; i++) {
  176. local[i] = max(local[i-1] + A[i], (long long)(A[i]));
  177. global = max(global, local[i]);
  178. }
  179.  
  180. return global;
  181. }
  182.  
  183.  
  184.  
  185. ll power(ll b, ll n, ll MOD) {
  186.  
  187. if (n < 0)
  188. return cerr << "n must be non-negative\n", 0;
  189.  
  190. if (n == 0)
  191. return 1;
  192. if (n == 1)
  193. return b % MOD;
  194.  
  195. if (n % 2 == 0) {
  196. b %= MOD;
  197. b *= b;
  198. b %= MOD;
  199.  
  200. return power(b, n / 2, MOD) % MOD;
  201. }
  202.  
  203. // if (n % 2 == 1) return b * power(b * b, (n - 1) / 2)
  204.  
  205. b %= MOD;
  206.  
  207. return ( (b) * (power(b*b, --n / 2, MOD) % MOD) ) % MOD;
  208.  
  209. }
  210.  
  211.  
  212. ll findlcm(vector<int> arr, int n)
  213. {
  214. // Initialize result
  215. ll ans = arr[0];
  216.  
  217. // ans contains LCM of arr[0], ..arr[i]
  218. // after i'th iteration,
  219. for (int i = 1; i < n; i++)
  220. ans = (((arr[i] * ans)) /
  221. (gcd(arr[i], ans)));
  222.  
  223. return ans;
  224. }
  225.  
  226. int gcd(int a, int b)
  227. {
  228. if (b == 0)
  229. return a;
  230. return gcd(b, a % b);
  231. }
Success #stdin #stdout 0.14s 42060KB
stdin
Standard input is empty
stdout
Standard output is empty