#include <math.h>
#include <stdio.h>
#include <stdlib.h>

double macheps()
{

    double e = 1.0;

    while (1.0 + e / 2.0 > 1.0)
        e /= 2.0;
    return e;

}


struct Point
{

    double x;
    double y;

};


double f(unsigned p, double x)
{

    double y = 0.;

    for(unsigned i = 0; i <= p; ++i) {

        y += (2 * (pow(x , 2 * i + 1) / (2 * i + 1)));

    }

    return y;

}

double g(double x)
{

    return log((1 + x) / (1 - x));

}


void TaylorCalculation(unsigned iterationCount, double a, double b, double (*taylor_f)(unsigned, double), double (*real_f)(double))
{

    double step = ( b - a ) / iterationCount;
    struct Point* points = (struct Point*)malloc(sizeof(struct Point) * iterationCount);
    double eps = macheps();
    double x = a;

    for(unsigned i = 0; i < iterationCount; ++i, x+=step) {

        unsigned p = 0;
        points[i].y = 10000;
        while(fabs(real_f(x) - taylor_f(p, x)) > eps * 100)
        {

            points[i].x = x;
            points[i].y = taylor_f(p, x);
            ++p;
            if(p >= 100) {

                break;

            }
        }

        printf("%d| %lf %lf %lf\n", i, x, real_f(x), points[i].y);

    }
}

int main()
{

    unsigned n;
    double a = 0., b = 0.5;
    scanf("%u", &n);
    TaylorCalculation(n, a, b, f, g);

}