#include <iostream>
#include <math.h>
using namespace std;
#define PI 4*atan(1)
double scal(double * x, double * y, int N, double h) {
double t = 0.0;
for (int i = 1; i < N; i++) {
t+= x[i] * y[i] * h;
}
t += (h/2) * (x[0]*y[0] + x[N]*y[N]);
return t;
}
void f2c(double * f, int N, double h) {
double * c = (double *) malloc(sizeof(double) * (N - 1));
double * phi = (double *) malloc(sizeof(double) * (N + 1));
for (int i = 0; i < N - 1; i++) {
for (int j = 0; j < N + 1; j++) {
double x = (j - 0.5) * h;
phi[j] = sqrt(2) * sin(PI * x * (i + 1));
}
double l = 4.0 / (h*h) * sin(PI * h * (i + 1)) * sin(PI * h * (i + 1));
c[i] = scal(f,phi,N,h)/l;
}
for (int i = 0; i < N + 1; i++) {
double t = 0.0;
for (int j = 0; j < N - 1; j++) {
t += c[j] * sqrt(2) * sin(PI * (j + 1) * (i - 0.5) * h);
}
cout << t << " " << f[i] << endl;
}
}
int main() {
int N;
cin >> N;
//double h = 1.0 / (N - 1);
double h = 1.0 / (N);
double * f = (double *) malloc(sizeof(double) * (N - 1));
double * phi = (double *) malloc(sizeof(double) * (N + 1));
double * psi = (double *) malloc(sizeof(double) * (N + 1));
for (int i = 0; i < N - 1; i++) {
for (int j = 0; j < N + 1; j++) {
phi[j] = sqrt(2) * sin(PI * (j-0.5) * h);
psi[j] = sqrt(2) * sin(PI * (j-0.5) *(i + 1) * h);
}
cout << scal(phi,psi,N,h) << endl;
}
for (int i = 0; i < N - 1; i++) {
f[i] = sin(PI * (i - 0.5) * h);
}
//f2c(f,N,h);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWF0aC5oPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKI2RlZmluZSBQSSA0KmF0YW4oMSkKIAogCmRvdWJsZSBzY2FsKGRvdWJsZSAqIHgsIGRvdWJsZSAqIHksIGludCBOLCBkb3VibGUgaCkgewoJZG91YmxlIHQgPSAwLjA7Cglmb3IgKGludCBpID0gMTsgaSA8IE47IGkrKykgewoJCXQrPSB4W2ldICogeVtpXSAqIGg7Cgl9Cgl0ICs9IChoLzIpICogKHhbMF0qeVswXSArIHhbTl0qeVtOXSk7CglyZXR1cm4gdDsKfQogCnZvaWQgZjJjKGRvdWJsZSAqIGYsIGludCBOLCBkb3VibGUgaCkgewoJZG91YmxlICogYyA9IChkb3VibGUgKikgbWFsbG9jKHNpemVvZihkb3VibGUpICogKE4gLSAxKSk7Cglkb3VibGUgKiBwaGkgPSAoZG91YmxlICopIG1hbGxvYyhzaXplb2YoZG91YmxlKSAqIChOICsgMSkpOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBOIC0gMTsgaSsrKSB7CgkJZm9yIChpbnQgaiA9IDA7IGogPCBOICsgMTsgaisrKSB7CgkJCWRvdWJsZSB4ID0gKGogLSAwLjUpICogaDsKCQkJcGhpW2pdID0gc3FydCgyKSAqIHNpbihQSSAqIHggKiAoaSArIDEpKTsKCQl9CgkJZG91YmxlIGwgPSA0LjAgLyAoaCpoKSAqIHNpbihQSSAqIGggKiAoaSArIDEpKSAqIHNpbihQSSAqIGggKiAoaSArIDEpKTsKCQljW2ldID0gc2NhbChmLHBoaSxOLGgpL2w7Cgl9Cglmb3IgKGludCBpID0gMDsgaSA8IE4gKyAxOyBpKyspIHsKCQlkb3VibGUgdCA9IDAuMDsKCQlmb3IgKGludCBqID0gMDsgaiA8IE4gLSAxOyBqKyspIHsKCQkJdCArPSBjW2pdICogc3FydCgyKSAqIHNpbihQSSAqIChqICsgMSkgKiAoaSAtIDAuNSkgKiBoKTsKCQl9CgkJY291dCA8PCB0IDw8ICIgIiA8PCBmW2ldIDw8IGVuZGw7Cgl9Cn0KIAogCmludCBtYWluKCkgewoJaW50IE47CgljaW4gPj4gTjsKCS8vZG91YmxlIGggPSAxLjAgLyAoTiAtIDEpOwoJZG91YmxlIGggPSAxLjAgLyAoTik7Cglkb3VibGUgKiBmID0gKGRvdWJsZSAqKSBtYWxsb2Moc2l6ZW9mKGRvdWJsZSkgKiAoTiAtIDEpKTsKCWRvdWJsZSAqIHBoaSA9IChkb3VibGUgKikgbWFsbG9jKHNpemVvZihkb3VibGUpICogKE4gKyAxKSk7Cglkb3VibGUgKiBwc2kgPSAoZG91YmxlICopIG1hbGxvYyhzaXplb2YoZG91YmxlKSAqIChOICsgMSkpOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBOIC0gMTsgaSsrKSB7CgkJZm9yIChpbnQgaiA9IDA7IGogPCBOICsgMTsgaisrKSB7CgkJCXBoaVtqXSA9IHNxcnQoMikgKiBzaW4oUEkgKiAoai0wLjUpICogaCk7CgkJCXBzaVtqXSA9IHNxcnQoMikgKiBzaW4oUEkgKiAoai0wLjUpICooaSArIDEpICogaCk7CgkJfQoJCWNvdXQgPDwgc2NhbChwaGkscHNpLE4saCkgPDwgZW5kbDsKCX0KCWZvciAoaW50IGkgPSAwOyBpIDwgTiAtIDE7IGkrKykgewoJCWZbaV0gPSBzaW4oUEkgKiAoaSAtIDAuNSkgKiBoKTsKCX0KCS8vZjJjKGYsTixoKTsKCXJldHVybiAwOwp9