#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; //#pragma comment(linker,"/STACK:102400000,102400000") int startBlackX[26] = {2,4,6,8,1,3,5,7,9,2,4,6,8,2,4,6,8,1,3,5,7,9,2,4,6,8}; int startBlackY[26] = {1,1,1,1,2,2,2,2,2,3,3,3,3,5,5,5,5,6,6,6,6,6,7,7,7,7}; int startWhiteX[14] = {1,3,5,7,9,2,4,6,8,1,3,5,7,9}; int startWhiteY[14] = {3,3,3,3,3,4,4,4,4,5,5,5,5,5}; int bitSetZeroX[8] = {2,4,6,8,2,4,6,8}; int bitSetZeroY[8] = {3,3,3,3,5,5,5,5}; int bitSetOneX[8] = {2,4,6,8,2,4,6,8}; int bitSetOneY[8] = {2,2,2,2,6,6,6,6}; int endBlackX[24] = {1,3,5,7,1,3,5,7,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8}; int endBlackY[24] = {1,1,1,1,7,7,7,7,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9}; int endWhiteX[4] = {1,3,5,7}; int endWhiteY[4] = {4,4,4,4}; vector xs, ys; void putBlack(int x, int y) { if(xs.size() % 2 == 1) { xs.push_back(0); ys.push_back(0); } xs.push_back(x); ys.push_back(y); } void putWhite(int x, int y) { if(xs.size() % 2 == 0) { xs.push_back(0); ys.push_back(0); } xs.push_back(x); ys.push_back(y); } int gray[257]; void bitChange(int mask0, int mask1) { for(int i = 0; i < 8; i++) { bool b0 = (mask0 & (1<>1)); gray[256] = 0; for(int i = 0; i < 14; i++) putWhite(startWhiteX[i], startWhiteY[i]); for(int i = 0; i < 26; i++) putBlack(startBlackX[i], startBlackY[i]); int state = 0; for(int i = 0; i < 24; i++) { for(int j = 0; j < 255; j++) { bitChange(gray[state], gray[state+1]); state ++; state %= 256; } putBlack(endBlackX[i], endBlackY[i]); } for(int i = 0; i < 4; i++) { for(int j = 0; j < 255; j++) { bitChange(gray[state], gray[state+1]); state ++; state %= 256; } putWhite(endWhiteX[i], endWhiteY[i]); } int n; cin >> n; //cout << xs.size() << endl; for(int i = 0; i < n; i++) cout << xs[i] << " " << ys[i] << endl; return 0; } int main() { #ifdef LOCAL_TEST freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); #endif ios :: sync_with_stdio(false); cout << fixed << setprecision(16); return MAIN(); }