#include <iostream>
#include <cstdio>
#include <iomanip>
#include <string>
#include <algorithm>
#include <cmath>
#include <map>
#include <set>
#include <vector>
#include <deque>
#include <queue>
#include <stack>
//#include <cassert>
#include <cstring>
#include <sstream>
#include <ctime>
#include <stdexcept>
#include <limits>
#include <bitset>
#ifdef __GXX_EXPERIMENTAL_CXX0X__
#include <unordered_map>
#include <unordered_set>
#endif
using namespace std;
#define assert(x) if (!(x)) cout << "ASSERT FAILED ON {"#x"}! Line: " << __LINE__ << "\n" << flush, exit(1);
#define assertwt(x) if (!(x)) {cout << "ASSERT FAILED ON {"#x"}! Line: " << __LINE__ << "\n" << flush; while(1);}
#define input_file(s) assert(freopen(s, "r", stdin))
#define output_file(s) assert(freopen(s, "w", stdout))
#define stderr_file(s) assert(freopen(s, "w", stderr))
#ifdef MY
#define FLU cout << flush
#else
#define FLU 42
#endif
#define ALL(a) (a).begin(), (a).end()
#define FORAB(i, a, b) for (int i = a; i < b; ++i)
#define DBG(x) z_dbg << #x" = " << x << "\n", FLU
#ifdef MY
#define CHECKPOINT z_dbg << "At line " << __LINE__ << ", clock: " << clock() << "\n", FLU
#else
#define CHECKPOINT 42
#endif
typedef unsigned uint;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> ipair;
const double PI = 3.14159265358979323846;
const double EPS = 1e-9;
const int INF = 2e9;
const ll LINF = 1e18;
template<class T>
const T sqr(const T &x) { return x * x; }
template<class T>
const T &min(const T &a, const T &b, const T &c) { return min(min(a, b), c); }
template<class T>
const T &max(const T &a, const T &b, const T &c) { return max(max(a, b), c); }
struct DbgStream {
template <class T>
DbgStream &operator<<(const T &x) {
#ifdef MY
cout << x;
#endif
return *this;
}
} z_dbg;
#define cerrr cerr
#define cerr z_dbg
// !GLOB
int main() {
#ifdef MY
input_file("input.txt");
output_file("output.txt");
//stderr_file("stderr.txt");
#else
#define TASK_FILE_NAME "protocol"
//input_file(TASK_FILE_NAME".in");
//output_file(TASK_FILE_NAME".out");
//input_file("input.txt");
//output_file("output.txt");
#endif
ios_base::sync_with_stdio(0);
// !MAIN
vector<int> px, py;
for (int r = 1; r <= 10000; ++r) {
int x = r, y = 0;
while (x > 0) {
while (sqr(x) + sqr(y + 1) <= sqr(r)) ++y;
if (sqr(x) + sqr(y) == sqr(r)) {
bool bad = 0;
for (uint i = 0; i < px.size(); ++i) {
for (uint j = i + 1; j < px.size(); ++j) {
int x1 = px[j] - px[i], y1 = py[j] - py[i];
int x2 = px[j] - x, y2 = py[j] - y;
if (x1 * y2 - x2 * y1 == 0) {
bad = 1;
break;
}
}
if (bad) break;
}
if (!bad) {
px.push_back(x);
py.push_back(y);
if (px.size() >= 300) {
for (uint i = 0; i < px.size(); ++i) {
cout << px[i] << " " << py[i] << "\n";
}
return 0;
}
}
}
--x;
}
}
cout << "not enough :(\n";
for (uint i = 0; i < px.size(); ++i) {
cout << px[i] << " " << py[i] << "\n";
}
return 0;
}