#include <bits/stdc++.h>
const double EPS = 1e-24;
const long long int MOD = 1000000007ll;
const double PI = 3.14159265359;
int INF = 2147483645;
template <class T>
T Max2(T a, T b) {
  return a < b ? b : a;
}
template <class T>
T Min2(T a, T b) {
  return a < b ? a : b;
}
template <class T>
T Max3(T a, T b, T c) {
  return Max2(Max2(a, b), c);
}
template <class T>
T Min3(T a, T b, T c) {
  return Min2(Min2(a, b), c);
}
template <class T>
T Max4(T a, T b, T c, T d) {
  return Max2(Max2(a, b), Max2(c, d));
}
template <class T>
T Min4(T a, T b, T c, T d) {
  return Min2(Min2(a, b), Max2(c, d));
}
using namespace std;
int K;
vector<pair<int, int> > ans;
int main() {
  scanf("%d", &K);
  if (K % 2 == 0) {
    cout << "NO";
    return 0;
  }
  int n = 1 + 2 * (K - 1);
  int m = 0;
  ans.push_back({1, 1 + n}), m++;
  for (int i = 2; i <= K; i++)
    ans.push_back({1, i}), ans.push_back({1 + n, i + n}), m += 2;
  for (int i = 2; i <= K; i++)
    for (int j = K + 1; j <= n; j++)
      ans.push_back({i, j}), ans.push_back({i + n, j + n}), m += 2;
  for (int i = K + 1; i <= n; i += 2)
    ans.push_back({i, i + 1}), ans.push_back({i + n, i + 1 + n}), m += 2;
  printf("YES\n%d %d\n", 2 * n, m);
  for (int i = 0; i < ans.size(); i++)
    printf("%d %d\n", ans[i].first, ans[i].second);
  return 0;
}
