You are given integer n. You have to arrange numbers from 1 to 2n, using each of them exactly once, on the circle, so that the following condition would be satisfied:

For every n consecutive numbers on the circle write their sum on the blackboard. Then any two of written on the blackboard 2n numbers differ not more than by 1.

For example, choose n = 3. On the left you can see an example of a valid arrangement: 1 + 4 + 5 = 10, 4 + 5 + 2 = 11, 5 + 2 + 3 = 10, 2 + 3 + 6 = 11, 3 + 6 + 1 = 10, 6 + 1 + 4 = 11, any two numbers differ by at most 1. On the right you can see an invalid arrangement: for example, 5 + 1 + 6 = 12, and 3 + 2 + 4 = 9, 9 and 12 differ more than by 1.

<image>

Input

The first and the only line contain one integer n (1 ≤ n ≤ 10^5).

Output

If there is no solution, output "NO" in the first line. 

If there is a solution, output "YES" in the first line. In the second line output 2n numbers — numbers from 1 to 2n in the order they will stay in the circle. Each number should appear only once. If there are several solutions, you can output any of them.

Examples

Input


3


Output


YES
1 4 5 2 3 6 

Input


4


Output


NO

Note

Example from the statement is shown for the first example. 

It can be proved that there is no solution in the second example.
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1 << 21;
const int N = int(1e5);
const long long mod = int(1e9) + 7;
const long long inf = 1e18;
const double PI = 3.1415926536;
inline int Set(int n, int pos) { return n = n | 1 << pos; }
inline bool check(int n, int pos) { return n & 1 << pos; }
inline int Reset(int n, int pos) { return n = n & ~(1 << pos); }
inline int lastbit(int n) { return n & (-n); }
inline long long mult_mod(long long a, long long b) {
  a = a % mod;
  b = b % mod;
  long long c = (a * b) % mod;
  return c;
}
inline long long add_mod(long long a, long long b) {
  a = (a + mod) % mod;
  b = (b + mod) % mod;
  long long c = (a + b) % mod;
  return c;
}
inline long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
inline long long lcm(long long a, long long b) { return (a * b) / gcd(a, b); }
inline long long power(long long a, long long b) {
  long long ans = 1;
  a = a % mod;
  while (b) {
    if (b & 1) ans = (ans * a) % mod;
    b >>= 1;
    a = (a * a) % mod;
  }
  return ans;
}
inline long long invmod(long long a) {
  long long ans = power(a, mod - 2);
  return ans;
}
inline unsigned long long mulmod(unsigned long long a, unsigned long long b,
                                 unsigned long long c) {
  unsigned long long x = 0, y = a % c;
  while (b > 0) {
    if (b % 2) x = (x + y) % c;
    y = (y * 2) % c;
    b >>= 1;
  }
  return x % c;
}
inline unsigned long long Largepower(unsigned long long a, unsigned long long b,
                                     unsigned long long c) {
  unsigned long long x = 1, y = a % c;
  while (b > 0) {
    if (b & 1) x = mulmod(x, y, c);
    y = mulmod(y, y, c);
    b >>= 1;
  }
  return x;
}
inline long long Egcd(long long a, long long b, long long *x, long long *y) {
  if (a == 0) {
    *x = 0, *y = 1;
    return b;
  }
  long long x1, y1;
  long long gcd = Egcd(b % a, a, &x1, &y1);
  *x = y1 - (b / a) * x1;
  *y = x1;
  return gcd;
}
inline int bs(int arr[], int l, int r, int item) {
  if (l == r) {
    if (arr[l] == item)
      return r;
    else
      return -1;
  }
  if (item <= arr[(l + r) / 2])
    return bs(arr, l, (l + r) / 2, item);
  else
    return bs(arr, (l + r) / 2 + 1, r, item);
}
inline long long nCrMod(long long n, long long r) {
  if (r > n / 2) r = n - r;
  long long ans = 1;
  for (long long i = 1; i <= r; i++) {
    ans = (ans % mod * (n - r + i + mod) % mod) % mod;
    ans = (ans % mod * invmod(i) % mod) % mod;
  }
  return ans % mod;
}
inline long long nCr(long long n, long long r) {
  if (r > n / 2) r = n - r;
  long long ans = 1;
  for (long long i = 1; i <= r; i++) {
    ans = (ans * (n - r + i));
    ans /= i;
  }
  return ans;
}
inline void fastin(int &x) {
  x = 0;
  char c = getchar();
  while (c < '0' || c > '9') c = getchar();
  while (c >= '0' && c <= '9') {
    x = (x << 3) + (x << 1) + c - '0';
    c = getchar();
  }
  return;
}
int leap[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int nleap[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int a[2 * N + 1];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int n;
  cin >> n;
  vector<int> v(2 * n);
  int odd = 0;
  int k = 0;
  for (int i = 1; i <= 2 * n; i += 2) {
    if (odd == 0)
      v[k++] = i;
    else
      v[k++] = i + 1;
    odd ^= 1;
  }
  odd = 0;
  for (int i = 2; i <= 2 * n; i += 2) {
    if (odd == 0)
      v[k++] = i;
    else
      v[k++] = i - 1;
    odd ^= 1;
  }
  int l = n - 1;
  long long s1 = v[0], s2 = v[0];
  int i = 1, j = 2 * n - 1;
  while (l--) {
    s1 += v[i];
    i++;
  }
  l = n - 1;
  while (l--) {
    s2 += v[j];
    j--;
  }
  if (s1 == s2) {
    cout << "YES\n";
    for (int i = 0; i < 2 * n; i++) cout << v[i] << " ";
  } else
    cout << "NO\n";
  return 0;
}
