summaryrefslogtreecommitdiff
path: root/introductory_problems/two_sets.cpp
blob: ce13e0ce2bd1da3c6007ef90694e8c750a68d0f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// 1092. Two Sets
#include <bits/stdc++.h>
using namespace std;

int main() {
  static int n;
  scanf("%d", &n);
  if (n % 4 == 1 || n % 4 == 2)
    printf("NO\n");
  else if (n % 4 == 3) {
    printf("YES\n");
    printf("%d\n", n / 2);
    for (int i = 2; i <= n / 2; i += 2)
      printf("%d %d ", i, n - i);
    printf("%d\n%d\n", n, n / 2 + 1);
    for (int i = 1; i <= n / 2; i += 2)
      printf("%d %d ", i, n - i);
  } else {
    printf("YES\n");
    printf("%d\n", n / 2);
    for (int i = 2; i <= n / 2; i += 2)
      printf("%d %d ", i, n - i + 1);
    printf("\n%d\n", n / 2);
    for (int i = 1; i <= n / 2; i += 2)
      printf("%d %d ", i, n - i + 1);
  }
}