/* Author haleyk10198 */
/* 作者: haleyk10198 */
/* CF handle: haleyk100198*/
#include <bits/stdc++.h>
#define MOD 1000000007
#define LINF (1LL<<60)
#define INF 2147483647
#define PI 3.1415926535897932384626433
#define ll long long
#define pii pair<int,int>
#define mp(x,y) make_pair((x),(y))
#define pb(x) push_back((x))
#define vi vector<int>
#define vvi vector<vi>
#define MAXN 100
#define ld long double
#define op operator
using namespace std;
string itos(int x){
stringstream ss;
ss << x;
return ss.str();
}
struct base {
typedef ld T; T re, im;
base() :re(0), im(0) {}
base(T re) :re(re), im(0) {}
base(T re, T im) :re(re), im(im) {}
base op + (const base& o) const { return base(re + o.re, im + o.im); }
base op - (const base& o) const { return base(re - o.re, im - o.im); }
base op * (const base& o) const { return base(re * o.re - im * o.im, re * o.im + im * o.re); }
base op * (ld k) const { return base(re * k, im * k); }
base conj() const { return base(re, -im); }
};
base w[MAXN]; //omega lookup table
int rev[MAXN]; //reverse lookup table
void build_rev(int k) {
static int rk = -1;
if( k == rk )return ; rk = k;
for(int i = 1; i < (1<<k); i++) {
int j = rev[i-1], t = k-1;
while( t >= 0 && ((j>>t)&1) ) { j ^= 1 << t; --t; }
if( t >= 0 ) { j ^= 1 << t; --t; }
rev[i] = j;
}
}
void fft(base *a, int k) {
build_rev(k); int n = 1 << k;
for(int i = 0; i < n; i++) if( rev[i] > i ) swap(a[i], a[rev[i]]);
for(int l = 2, lll = 1; l <= n; l += l, lll += lll) {
if( w[lll].re == 0 && w[lll].im == 0 ) {
ld angle = PI / lll;
base ww( cosl(angle), -sinl(angle) );
if( lll > 1 ) for(int j = 0; j < lll; ++j) {
if( j & 1 ) w[lll + j] = w[(lll+j)/2] * ww;
else w[lll + j] = w[(lll+j)/2];
} else w[lll] = base(1, 0);
}
for(int i = 0; i < n; i += l)
for(int j = 0; j < lll; j++){
base v = a[i + j], u = a[i + j + lll] * w[lll + j];
a[i + j] = v + u; a[i + j + lll] = v - u;
}
}
}
base a[110];
int main(){
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);
ios_base::sync_with_stdio(false);
a[0] = base(0, 0);
a[1] = base(0, 0);
a[2] = base(4166667, 0);
a[3] = base(1, 0);
fft(a, 2);
for(int i = 0; i < 4; i++)
cout << a[i].re << ' ' << a[i].im << endl;
return 0;
}
LyogQXV0aG9yIGhhbGV5azEwMTk4ICovCi8qIOS9nOiAhTogIGhhbGV5azEwMTk4ICovCi8qIENGIGhhbmRsZTogaGFsZXlrMTAwMTk4Ki8KI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIE1PRCAxMDAwMDAwMDA3CiNkZWZpbmUgTElORiAoMUxMPDw2MCkKI2RlZmluZSBJTkYgMjE0NzQ4MzY0NwojZGVmaW5lIFBJIDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMwojZGVmaW5lIGxsIGxvbmcgbG9uZwojZGVmaW5lIHBpaSBwYWlyPGludCxpbnQ+CiNkZWZpbmUgbXAoeCx5KSBtYWtlX3BhaXIoKHgpLCh5KSkKI2RlZmluZSBwYih4KSBwdXNoX2JhY2soKHgpKQojZGVmaW5lIHZpIHZlY3RvcjxpbnQ+CiNkZWZpbmUgdnZpIHZlY3Rvcjx2aT4KI2RlZmluZSBNQVhOIDEwMAojZGVmaW5lIGxkIGxvbmcgZG91YmxlCiNkZWZpbmUgb3Agb3BlcmF0b3IKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJpbmcgaXRvcyhpbnQgeCl7CglzdHJpbmdzdHJlYW0gc3M7CglzcyA8PCB4OwoJcmV0dXJuIHNzLnN0cigpOwp9CgpzdHJ1Y3QgYmFzZSB7CiAgIHR5cGVkZWYgbGQgVDsgVCByZSwgaW07CiAgIGJhc2UoKSA6cmUoMCksIGltKDApIHt9CiAgIGJhc2UoVCByZSkgOnJlKHJlKSwgaW0oMCkge30KICAgYmFzZShUIHJlLCBUIGltKSA6cmUocmUpLCBpbShpbSkge30KICAgYmFzZSBvcCArIChjb25zdCBiYXNlJiBvKSBjb25zdCB7IHJldHVybiBiYXNlKHJlICsgby5yZSwgaW0gKyBvLmltKTsgfQogICBiYXNlIG9wIC0gKGNvbnN0IGJhc2UmIG8pIGNvbnN0IHsgcmV0dXJuIGJhc2UocmUgLSBvLnJlLCBpbSAtIG8uaW0pOyB9CiAgIGJhc2Ugb3AgKiAoY29uc3QgYmFzZSYgbykgY29uc3QgeyByZXR1cm4gYmFzZShyZSAqIG8ucmUgLSBpbSAqIG8uaW0sIHJlICogby5pbSArIGltICogby5yZSk7IH0KICAgYmFzZSBvcCAqIChsZCBrKSBjb25zdCB7IHJldHVybiBiYXNlKHJlICogaywgaW0gKiBrKTsgfQogICBiYXNlIGNvbmooKSBjb25zdCB7IHJldHVybiBiYXNlKHJlLCAtaW0pOyB9Cn07CgpiYXNlIHdbTUFYTl07IC8vb21lZ2EgbG9va3VwIHRhYmxlCmludCByZXZbTUFYTl07IC8vcmV2ZXJzZSBsb29rdXAgdGFibGUKCnZvaWQgYnVpbGRfcmV2KGludCBrKSB7CiAgIHN0YXRpYyBpbnQgcmsgPSAtMTsKICAgaWYoIGsgPT0gcmsgKXJldHVybiA7IHJrID0gazsKICAgZm9yKGludCBpID0gMTsgaSA8ICgxPDxrKTsgaSsrKSB7CiAgICAgICBpbnQgaiA9IHJldltpLTFdLCB0ID0gay0xOwogICAgICAgd2hpbGUoIHQgPj0gMCAmJiAoKGo+PnQpJjEpICkgeyBqIF49IDEgPDwgdDsgLS10OyB9CiAgICAgICBpZiggdCA+PSAwICkgeyBqIF49IDEgPDwgdDsgLS10OyB9CiAgICAgICByZXZbaV0gPSBqOwogICB9Cn0KCnZvaWQgZmZ0KGJhc2UgKmEsIGludCBrKSB7CiAgIGJ1aWxkX3JldihrKTsgaW50IG4gPSAxIDw8IGs7CiAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGlmKCByZXZbaV0gPiBpICkgc3dhcChhW2ldLCBhW3JldltpXV0pOwogICBmb3IoaW50IGwgPSAyLCBsbGwgPSAxOyBsIDw9IG47IGwgKz0gbCwgbGxsICs9IGxsbCkgewogICAgICAgaWYoIHdbbGxsXS5yZSA9PSAwICYmIHdbbGxsXS5pbSA9PSAwICkgewogICAgICAgICAgIGxkIGFuZ2xlID0gUEkgLyBsbGw7CiAgICAgICAgICAgYmFzZSB3dyggY29zbChhbmdsZSksIC1zaW5sKGFuZ2xlKSApOwogICAgICAgICAgIGlmKCBsbGwgPiAxICkgZm9yKGludCBqID0gMDsgaiA8IGxsbDsgKytqKSB7CiAgICAgICAgICAgICAgIGlmKCBqICYgMSApIHdbbGxsICsgal0gPSB3WyhsbGwraikvMl0gKiB3dzsKICAgICAgICAgICAgICAgZWxzZSB3W2xsbCArIGpdID0gd1sobGxsK2opLzJdOwogICAgICAgICAgIH0gZWxzZSB3W2xsbF0gPSBiYXNlKDEsIDApOwogICAgICAgfQogICAgICAgZm9yKGludCBpID0gMDsgaSA8IG47IGkgKz0gbCkgCgkgICAJIGZvcihpbnQgaiA9IDA7IGogPCBsbGw7IGorKyl7CiAgICAgICAgICAgYmFzZSB2ID0gYVtpICsgal0sIHUgPSBhW2kgKyBqICsgbGxsXSAqIHdbbGxsICsgal07CiAgICAgICAgICAgYVtpICsgal0gPSB2ICsgdTsgYVtpICsgaiArIGxsbF0gPSB2IC0gdTsKICAgICAgIAkJfQogICB9Cn0KCmJhc2UgYVsxMTBdOwoKaW50IG1haW4oKXsKCS8vZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pOwoJLy9mcmVvcGVuKCJvdXRwdXQudHh0IiwidyIsc3Rkb3V0KTsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJYVswXSA9IGJhc2UoMCwgMCk7CglhWzFdID0gYmFzZSgwLCAwKTsKCWFbMl0gPSBiYXNlKDQxNjY2NjcsIDApOwoJYVszXSA9IGJhc2UoMSwgMCk7CglmZnQoYSwgMik7IAoJZm9yKGludCBpID0gMDsgaSA8IDQ7IGkrKykKCQljb3V0IDw8IGFbaV0ucmUgPDwgJyAnIDw8IGFbaV0uaW0gPDwgZW5kbDsKCXJldHVybiAwOwp9Cg==