#include <bits/stdc++.h>
using ll = long long;
using namespace std;
using point = pair<int, int>;
int dx[] = {0, 0, 1, -1};
int dy[] = {1, -1, 0, 0};
const int N = 1e5;
bool is_black(const point& cand) {
return (cand.first + cand.second) % 2 == 0;
}
bool valid(const point& cand) {
auto [x, y] = cand;
return 1 <= x && x <= N && 1 <= y && y <= N;
}
vector<pair<int, int>> solve(int n, int flag) {
if (n == 0) {
return {{1, 2}};
}
set<point> vis;
deque<point> q;
vis.insert({N / 2 + flag, N / 2});
q.emplace_back(N / 2 + flag, N / 2);
while (!q.empty()) {
point cur = q.front();
q.pop_front();
n -= is_black(cur);
if (!n) break;
for (int k = 0; k < 4; k++) {
cur.first += dx[k];
cur.second += dy[k];
if (valid(cur) && vis.find(cur) == vis.end()) {
vis.insert(cur);
if (is_black(cur)) q.push_front(cur);
else q.push_back(cur);
}
cur.first -= dx[k];
cur.second -= dy[k];
}
}
vector<point> ret;
for (auto& cand : vis) {
auto p = cand;
if (is_black(p)) {
ret.push_back(p);
continue;
}
int cnt = 0;
for (int k = 0; k < 4; k++) {
p.first += dx[k];
p.second += dy[k];
if (vis.find(p) != vis.end())
cnt++;
p.first -= dx[k];
p.second -= dy[k];
}
if (cnt > 1) ret.push_back(p);
}
return ret;
}
int32_t main() {
ios::sync_with_stdio(false);
cin.tie(nullptr), cout.tie(nullptr);
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
vector<pair<int, int>> a = solve(n, 0);
vector<pair<int, int>> b = solve(n, 1);
if (a.size() > b.size()) a = b;
cout << a.size() << "\n";
for (auto& [i, j] : a) {
cout << i - 49996 << " " << j - 49996 << "\n";
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAKdXNpbmcgbGwgPSBsb25nIGxvbmc7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIHBvaW50ID0gcGFpcjxpbnQsIGludD47CiAKaW50IGR4W10gPSB7MCwgMCwgMSwgLTF9OwppbnQgZHlbXSA9IHsxLCAtMSwgMCwgMH07CmNvbnN0IGludCBOID0gMWU1OwogCmJvb2wgaXNfYmxhY2soY29uc3QgcG9pbnQmIGNhbmQpIHsKICAgIHJldHVybiAoY2FuZC5maXJzdCArIGNhbmQuc2Vjb25kKSAlIDIgPT0gMDsKfQpib29sIHZhbGlkKGNvbnN0IHBvaW50JiBjYW5kKSB7CiAgICBhdXRvIFt4LCB5XSA9IGNhbmQ7CiAgICByZXR1cm4gMSA8PSB4ICYmIHggPD0gTiAmJiAxIDw9IHkgJiYgeSA8PSBOOwp9CiAKdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiBzb2x2ZShpbnQgbiwgaW50IGZsYWcpIHsKIAogICAgaWYgKG4gPT0gMCkgewogICAgICAgIHJldHVybiB7ezEsIDJ9fTsKICAgIH0KIAogICAgc2V0PHBvaW50PiB2aXM7CiAgICBkZXF1ZTxwb2ludD4gcTsKICAgIHZpcy5pbnNlcnQoe04gLyAyICsgZmxhZywgTiAvIDJ9KTsKICAgIHEuZW1wbGFjZV9iYWNrKE4gLyAyICsgZmxhZywgTiAvIDIpOwogCiAgICB3aGlsZSAoIXEuZW1wdHkoKSkgewogICAgICAgIHBvaW50IGN1ciA9IHEuZnJvbnQoKTsKICAgICAgICBxLnBvcF9mcm9udCgpOwogCiAgICAgICAgbiAtPSBpc19ibGFjayhjdXIpOwogICAgICAgIGlmICghbikgYnJlYWs7CiAKICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IDQ7IGsrKykgewogICAgICAgICAgICBjdXIuZmlyc3QgKz0gZHhba107CiAgICAgICAgICAgIGN1ci5zZWNvbmQgKz0gZHlba107CiAKICAgICAgICAgICAgaWYgKHZhbGlkKGN1cikgJiYgdmlzLmZpbmQoY3VyKSA9PSB2aXMuZW5kKCkpIHsKICAgICAgICAgICAgCXZpcy5pbnNlcnQoY3VyKTsKICAgICAgICAgICAgICAgIGlmIChpc19ibGFjayhjdXIpKSBxLnB1c2hfZnJvbnQoY3VyKTsKICAgICAgICAgICAgICAgIGVsc2UgcS5wdXNoX2JhY2soY3VyKTsKICAgICAgICAgICAgfQogCiAgICAgICAgICAgIGN1ci5maXJzdCAtPSBkeFtrXTsKICAgICAgICAgICAgY3VyLnNlY29uZCAtPSBkeVtrXTsKICAgICAgICB9CiAgICB9CiAKICAgIHZlY3Rvcjxwb2ludD4gcmV0OwogICAgZm9yIChhdXRvJiBjYW5kIDogdmlzKSB7CiAgICAgICAgYXV0byBwID0gY2FuZDsKICAgICAgICBpZiAoaXNfYmxhY2socCkpIHsKICAgICAgICAgICAgcmV0LnB1c2hfYmFjayhwKTsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGludCBjbnQgPSAwOwogICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgNDsgaysrKSB7CiAgICAgICAgICAgIHAuZmlyc3QgKz0gZHhba107CiAgICAgICAgICAgIHAuc2Vjb25kICs9IGR5W2tdOwogCiAgICAgICAgICAgIGlmICh2aXMuZmluZChwKSAhPSB2aXMuZW5kKCkpCiAgICAgICAgICAgICAgICBjbnQrKzsKIAogICAgICAgICAgICBwLmZpcnN0IC09IGR4W2tdOwogICAgICAgICAgICBwLnNlY29uZCAtPSBkeVtrXTsKICAgICAgICB9CiAgICAgICAgaWYgKGNudCA+IDEpIHJldC5wdXNoX2JhY2socCk7CiAgICB9CiAKICAgIHJldHVybiByZXQ7Cn0KIAppbnQzMl90IG1haW4oKSB7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpLCBjb3V0LnRpZShudWxscHRyKTsKIAogICAgaW50IHQ7CiAgICBjaW4gPj4gdDsKIAogICAgd2hpbGUgKHQtLSkgewogICAgICAgIGludCBuOwogICAgICAgIGNpbiA+PiBuOwogCiAgICAgICAgdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiBhID0gc29sdmUobiwgMCk7CiAgICAgICAgdmVjdG9yPHBhaXI8aW50LCBpbnQ+PiBiID0gc29sdmUobiwgMSk7CiAKICAgICAgICBpZiAoYS5zaXplKCkgPiBiLnNpemUoKSkgYSA9IGI7CiAKICAgICAgICBjb3V0IDw8IGEuc2l6ZSgpIDw8ICJcbiI7CiAgICAgICAgZm9yIChhdXRvJiBbaSwgal0gOiBhKSB7CiAgICAgICAgCQogICAgICAgICAgICBjb3V0IDw8IGkgLSA0OTk5NiA8PCAiICIgPDwgaiAtIDQ5OTk2IDw8ICJcbiI7CiAgICAgICAgfQogICAgfQogCiAgICByZXR1cm4gMDsKfQo=