#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;
}






