#include <bits/stdc++.h>
using namespace std;
long long pw(long long b, long long p) {
  if (!p) return 1;
  long long sq = pw(b, p / 2);
  sq *= sq;
  if (p % 2) sq *= b;
  return sq;
}
long long gcd(long long a, long long b) { return (b == 0 ? a : gcd(b, a % b)); }
long long sd(long long x) { return x < 10 ? x : x % 10 + sd(x / 10); }
long long lcm(long long a, long long b) { return ((a * b) / gcd(a, b)); }
int main() {
  int k, n, m;
  cin >> k;
  if (k % 2 == 0) return cout << "NO", 0;
  n = 2 * (k - 1) + 1;
  n *= 2;
  vector<pair<int, int> > out;
  out.push_back(pair<int, int>(1, 1 + n / 2));
  for (int i = 2; i < k + 1; ++i) out.push_back(pair<int, int>(1, i));
  for (int i = k + 1; i < 2 * k; ++i) {
    for (int j = 2; j < k + 1; ++j) {
      out.push_back(pair<int, int>(i, j));
    }
  }
  for (int i = k + 1; i < 2 * k; i += 2)
    out.push_back(pair<int, int>(i, i + 1));
  for (int i = 2; i < k + 1; ++i)
    out.push_back(pair<int, int>(1 + n / 2, i + n / 2));
  for (int i = k + 1; i < 2 * k; ++i) {
    for (int j = 2; j < k + 1; ++j) {
      out.push_back(pair<int, int>(i + n / 2, j + n / 2));
    }
  }
  for (int i = k + 1; i < 2 * k; i += 2)
    out.push_back(pair<int, int>(i + n / 2, i + 1 + n / 2));
  cout << "YES\n" << n << " " << ((int)((out).size())) << endl;
  for (int i = 0; i < ((int)((out).size())); ++i)
    printf("%d %d\n", out[i].first, out[i].second);
}
