#include <bits/stdc++.h>
using namespace std;
int dx[8] = {2, 2, 1, 1, -1, -1, -2, -2};
int dy[8] = {1, -1, 2, -2, -2, 2, -1, 1};
int calc(int i, int j, const vector<vector<int> >& v) {
  int c = 0;
  for (int d = 0; d < 8; ++d) {
    int x = i + dx[d], y = j + dy[d];
    if (x >= 0 && y >= 0 && x < v.size() && y < v[0].size() && v[x][y]) {
      ++c;
    }
  }
  return c;
}
void solve(int n) {
  vector<vector<int> > v(2 * n + 3, vector<int>(2 * n + 3));
  vector<pair<int, int> > res;
  if (0)
    for (int i = 0; i < 2; ++i) {
      for (int j = 0; j < 2 && res.size() < n; ++j) {
        res.emplace_back(n + i, n + j);
      }
    }
  if (0) {
    for (int j = 2; j < n + 2; ++j) {
      for (int i = 1; i >= 0; --i) {
        if (res.size() < n) res.emplace_back(n + i, n + j);
        if (res.size() < n) res.emplace_back(n + j, n + i);
        if (res.size() < n) res.emplace_back(n + i, n + 1 - j);
        if (res.size() < n) res.emplace_back(n + 1 - j, n + i);
      }
    }
  }
  if (0) {
    for (int j = 2; j < n + 2; ++j) {
      for (int i = 1; i >= 0; --i) {
        if (res.size() < n) res.emplace_back(n + i, n + j);
        if (res.size() < n) res.emplace_back(n + j, n + i);
      }
    }
  }
  for (int l = 0; l < n; ++l) {
    for (int i = 0; i < 3; ++i)
      if ((i + l) % 2) {
        if (res.size() < n) res.emplace_back(n + i, n + l);
      }
  }
  assert(res.size() == n);
  sort(res.begin(), res.end());
  for (int i = 0; i + 1 < n; ++i) assert(res[i] != res[i + 1]);
  for (pair<int, int> p : res) {
    v[p.first][p.second] = 1;
  }
  if (0)
    for (int i = 0; i < v.size(); ++i) {
      for (int j = 0; j < v[i].size(); ++j) cerr << v[i][j];
      cerr << endl;
    }
  vector<pair<int, int> > q = res;
  int it = 0;
  while (it < q.size()) {
    pair<int, int> p = q[it++];
    for (int d = 0; d < 8; ++d) {
      int x = p.first + dx[d], y = p.second + dy[d];
      if (x >= 0 && y >= 0 && x < v.size() && y < v[0].size() && !v[x][y] &&
          calc(x, y, v) >= 4) {
        v[x][y] = 1;
        q.emplace_back(x, y);
      }
    }
  }
  if (0)
    for (int i = 0; i < v.size(); ++i) {
      for (int j = 0; j < v[i].size(); ++j) cerr << v[i][j];
      cerr << endl;
    }
  cerr << n << ' ' << n * n / 10 << ' ' << q.size() << endl;
  assert(q.size() >= n * n / 10);
  for (pair<int, int> p : res) {
    cout << p.first << ' ' << p.second << endl;
  }
}
int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(0);
  int n;
  cin >> n;
  solve(n);
  return 0;
}
