#include <bits/stdc++.h>
using namespace std;
int a[100010], f1[100010], f2[100010];
int main() {
  int n;
  cin >> n;
  a[0] = -1;
  for (int i = 1; i <= n; i++) a[i] = a[i / 2] + 1;
  if (n % 2 == 1)
    cout << "NO\n";
  else {
    int x = n;
    while (x > 0) {
      int y = a[x];
      for (int i = (1 << y); i <= x; i++) {
        f1[i] = (1 << (y + 1)) - i - 1;
        f1[f1[i]] = i;
      }
      x = (1 << (y + 1)) - x - 2;
    }
    cout << "YES\n";
    for (int i = 1; i <= n; i++) cout << f1[i] << " ";
    cout << endl;
  }
  if (n <= 5 || n == (1 << a[n]))
    cout << "NO\n";
  else if (n == 6)
    cout << "YES\n3 6 2 5 1 4\n";
  else {
    f2[1] = 7;
    f2[2] = 3;
    f2[3] = 6;
    f2[4] = 5;
    f2[5] = 1;
    f2[6] = 2;
    f2[7] = 4;
    for (int i = 8; i <= n; i++) {
      if (i == n || i + 1 == (1 << (a[i] + 1)))
        f2[i] = (1 << a[i]);
      else
        f2[i] = i + 1;
    }
    cout << "YES\n";
    for (int i = 1; i <= n; i++) cout << f2[i] << " ";
    cout << endl;
  }
}

### Prompt

In Cpp, your task is to solve the following problem:

Given an integer N, find two permutations:

  1. Permutation p of numbers from 1 to N such that pi ≠ i and pi & i = 0 for all i = 1, 2, ..., N. 
  2. Permutation q of numbers from 1 to N such that qi ≠ i and qi & i ≠ 0 for all i = 1, 2, ..., N. 



& is the [bitwise AND operation](https://en.wikipedia.org/wiki/Bitwise_operation#AND).

Input

The input consists of one line containing a single integer N (1 ≤ N ≤ 105).

Output

For each subtask, if the required permutation doesn't exist, output a single line containing the word "NO"; otherwise output the word "YES" in the first line and N elements of the permutation, separated by spaces, in the second line. If there are several possible permutations in a subtask, output any of them.

Examples

Input

3


Output

NO
NO


Input

6


Output

YES
6 5 4 3 2 1 
YES
3 6 2 5 1 4

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
int a[100010], f1[100010], f2[100010];
int main() {
  int n;
  cin >> n;
  a[0] = -1;
  for (int i = 1; i <= n; i++) a[i] = a[i / 2] + 1;
  if (n % 2 == 1)
    cout << "NO\n";
  else {
    int x = n;
    while (x > 0) {
      int y = a[x];
      for (int i = (1 << y); i <= x; i++) {
        f1[i] = (1 << (y + 1)) - i - 1;
        f1[f1[i]] = i;
      }
      x = (1 << (y + 1)) - x - 2;
    }
    cout << "YES\n";
    for (int i = 1; i <= n; i++) cout << f1[i] << " ";
    cout << endl;
  }
  if (n <= 5 || n == (1 << a[n]))
    cout << "NO\n";
  else if (n == 6)
    cout << "YES\n3 6 2 5 1 4\n";
  else {
    f2[1] = 7;
    f2[2] = 3;
    f2[3] = 6;
    f2[4] = 5;
    f2[5] = 1;
    f2[6] = 2;
    f2[7] = 4;
    for (int i = 8; i <= n; i++) {
      if (i == n || i + 1 == (1 << (a[i] + 1)))
        f2[i] = (1 << a[i]);
      else
        f2[i] = i + 1;
    }
    cout << "YES\n";
    for (int i = 1; i <= n; i++) cout << f2[i] << " ";
    cout << endl;
  }
}

```