#include <bits/stdc++.h>
using namespace std;
const int N = 50 + 7;
int ned[N][N];
string s[N];
void paint(const vector<pair<int, int> > &v) {
  set<pair<int, int> > s;
  queue<pair<int, int> > que;
  map<pair<int, int>, int> cnt;
  for (auto e : v) {
    que.push(e);
    s.insert(e);
  }
  const int dx[] = {2, 2, 1, 1, -1, -1, -2, -2};
  const int dy[] = {1, -1, 2, -2, 2, -2, 1, -1};
  int tot = 0;
  while (!que.empty()) {
    auto p = que.front();
    que.pop();
    tot++;
    for (int i = (0); i < (8); i++) {
      int x = p.first + dx[i];
      int y = p.second + dy[i];
      if (s.find(make_pair(x, y)) != s.end()) continue;
      if (++cnt[make_pair(x, y)] == 4) {
        s.insert({x, y});
        que.push({x, y});
      }
    }
  }
  cout << "sz(s)"
       << " = " << (((int)(s).size())) << "\n";
  int des = ((int)(v).size()) * ((int)(v).size()) / 10;
  cout << "des"
       << " = " << (des) << "\n";
}
int main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(0);
  int n;
  cin >> n;
  vector<pair<int, int> > v;
  for (int i = (0); i < (n); i++) {
    if (i & 1) v.push_back({3, i});
    v.push_back({0, i});
    if (((int)(v).size()) > n) break;
  }
  v.resize(n);
  for (auto e : v) cout << e.first << " " << e.second << "\n";
  return 0;
}
