Recently, a chaotic virus Hexadecimal advanced a new theorem which will shake the Universe. She thinks that each Fibonacci number can be represented as sum of three not necessary different Fibonacci numbers.Let's remember how Fibonacci numbers can be calculated. F0 = 0, F1 = 1, and all the next numbers are Fi = Fi - 2 + Fi - 1.So, Fibonacci numbers make a sequence of numbers: 0, 1, 1, 2, 3, 5, 8, 13, ...If you haven't run away from the PC in fear, you have to help the virus. Your task is to divide given Fibonacci number n by three not necessary different Fibonacci numbers or say that it is impossible.

The input contains of a single integer n (0 ≤ n < 109) — the number that should be represented by the rules described above. It is guaranteed that n is a Fibonacci number.

Output three required numbers: a, b and c. If there is no answer for the test you have to print "I'm too stupid to solve this problem" without the quotes. If there are multiple answers, print any of them.

#include <iostream>

int main() {
	int n;
	std::cin >> n;
	std::cout << "0 0 " << n;
}

//C++ Template: http://pastebin.com/dGrr0CpX

#pragma comment(linker,"/STACK:256000000")
#define _CRT_SECURE_NO_WARNINGS

#include <algorithm>
#include <iostream>
#include <memory.h>
#include <iomanip>
#include <string>
#include <vector>
#include <cstdio>
#include <cmath>
#include <queue>
#include <ctime>
#include <set>
#include <map>

using namespace std;

#define all(a) a.begin(), a.end()
#define PI 3.14159265358979
#define sz(a) (int)a.size()
#define sqr(x) ((x)*(x))
#define ppb push_back
#define mp make_pair

const int SZ = 110;
const int INF = 1000*1000*1000;

double start, finish;
/****************************************************************************/
void prepare(string s) {
#ifdef _DEBUG
    freopen("input.txt", "r", stdin);
#else
    if (sz(s) != 0) {
        if (s == "ACMP") {
            freopen("INPUT.TXT", "r", stdin);
            freopen("OUTPUT.TXT", "w", stdout);
        } else {
            freopen((s + ".in").c_str(), "r", stdin);
            freopen((s + ".out").c_str(), "w", stdout);
        }
    }
#endif
}

void startTimer() {
#ifdef _DEBUG
    start = clock();
#endif
}

void stopTimer() {
#ifdef _DEBUG
    finish = clock();
    cout << "\n*** Total time ***\n" << (finish - start)/CLOCKS_PER_SEC << endl;
#endif
}
/****************************************************************************/

long long n;

void getData() {
	cin >> n;
}

vector <long long> p;

void solve() {

	cout << n << " 0 0" << endl;
	return;

	if (n < 3) {
		cout << "I'm too stupid to solve this problem" << endl;
		return;
	}

	if (n == 3) {
		cout << "1 1 1" << endl;
		return;
	}

	long long f1 = 0, f2 = 1, f;
	p.ppb(1);
	for (int i = 0; i < n; ++i) {
		f = f1 + f2;
		if (f == n) {
			break;
		}
		p.ppb(f);
		f1 = f2;
		f2 = f;
	}
	cout << p[sz(p) - 4] << " " << p[sz(p) - 3] << " " << p[sz(p) - 1] << endl;
}

int main() {

prepare("");

ios::sync_with_stdio(false);

startTimer();

    getData();
    solve();

stopTimer();
    return 0;
}

#include <iostream>

using namespace std;

int main()
{
    long int n,a=0,b=1,c;
    cin >> n;
    if(n==0) {cout << 0 << " " << 0 << " " << 0;return 0;}
    while(a+b!=n)
    {
        c=a+b;
        a=b;
        b=c;
    }
    cout << 0 << " " << a << " " << b;
    return 0;
}

/* In the Name of The Pure One */

#include <iostream>
#include <algorithm>
#include <string>
#include <cmath>
#include <vector>
#include <set>
#include <fstream>
#include <queue>
#include <cstring>
#include <iomanip>
#include <map>
#include <cstdio>

using namespace std;

typedef long long ll;
typedef long double ld;
typedef vector<int> vi;
typedef pair<int,int> pii;
#define pb push_back
#define X first
#define Y second

const int N=2*1e6+2;

int F[N],n;
int main () {

    cin>>n;
    if(n==0)
    {
        cout<<"0 0 0";
        return 0;
    }
    if(n==1)
    {
        cout<<"0 0 1";
        return  0;
    }
    if(n==2)
    {
        cout<<"0 1 1";
        return 0 ;
    }
    if(n==3)
    {
        cout<<"1 1 1";
        return 0 ;
    }
    F[0]=0;
    F[1]=1;
    for(int i=2;i<=1000*1000;i++)
    {
        F[i]=F[i-1]+F[i-2];
        if(F[i]==n)
        {
            cout<<F[i-1]<<" "<<F[i-3]<<" "<<F[i-4];
            return 0;
        }
    }
    return 0;
}

#include<iostream>
#include<cstdio>
using namespace std;
int main(){
int n=0;
int a=0,b=0,c=0;
while((scanf("%d",&n))!=EOF)
{
cout<<a<<" "<<b<<" "<<n<<endl;
}
return 0;
}

//============================================================================
// Name        : Contest
// Author      : The Assassin
// Version     : V.1
// Copyright   : Belong to the Brotherhood
// Description : By the way of The Assassins ISA Accepted [[fakss31]]
//============================================================================

#include <bits/stdc++.h>

using namespace std;

#define For(i,st,ed) for(int i=st;i<ed;i++)
#define rFor(i,ed,st) for(int i=ed-1;i>=st;i--)
#define all(v) (v).begin(),(v).end()
#define cin_int(i) scanf("%d",&i)
#define cin_char(i) scanf("%c ",&i)
#define cin_2int(i,j) scanf("%d %d",&i,&j)
#define cout_int(i) printf("%d ",i)
#define cout_2int(i,j) printf("%d %d\n",i,j)
#define Pair(a) (a).first,(a).second
//freopen("input.txt","r",stdin);
//freopen("output.txt","w",stdout);

using namespace std;

int main() {
    int n; cin_int(n);
    printf("%d %d %d",0,0,n);
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define ll long long
map < int , int > f ;
int fib( int n ){
    if ( n == 0 )
        return 0 ;
    if( 1 == n || 2 == n )
        return 1 ;
    if ( f [ n ] !=  0 )
        return f [ n ] ;
    f [ n ] = fib( n - 1 ) + fib( n - 2 ) ;
    return  f [ n ] ;
}

int main(){
    int n , count = 3 , ans ;
    cin >> n ;
    for ( int i = 0 ; i < 90 ; ++i )
        fib( i ) ;
    f [ 1 ] = 1 , f [ 0 ] = 0 ;
    if ( n == 1 ){
        cout << 0 << " " <<  0 << " " << n << endl ;
        count = 0 ;
    }
    while ( count ){
        int i = 0 ;
        while ( f [ i ] <= n ) ++i ;
        cout << f [ i - 1 ] << " " ;
        n -= f [ i - 1 ] ;
        --count ;
    }
    return 0 ;
}

#include<iostream>
#include<string>
#include<cmath>
#include<algorithm>
#include<vector>
#define limit 1000000001
using namespace std;
vector<long long> fibos;

bool isPerfectSquare(long n)
{
  if (n < 0)
    return false;
  long tst = (long)(sqrt((double)n) + 0.5);
  return tst*tst == n;
}

int main()
{
	int b=0, c=1;
	fibos.push_back(0);
	fibos.push_back(1);
	for(long long a=0;c<limit;c=a+b)
	{
		a=b;
		b=c;
		c=a+b;
		fibos.push_back(c);
	}
	int n;
	cin >> n;
	if( n == 0)
		cout << "0" << " 0" << " 0" << endl;
	else if( n == 1)
		cout << "0" << " 0" << " 1" << endl;
	else if( n == 2)
		cout << "0" << " 1" << " 1" << endl;
	else if( n == 3)
		cout << "1" << " 1" << " 1" << endl;
	else
	{
		int idx = (int) (lower_bound(fibos.begin(),fibos.end(),n)-fibos.begin());
		int v[3];
		v[0] = fibos[idx-1];
		v[1] = fibos[idx-3];
		v[2] = fibos[idx-4];
		if((v[0]+v[1]+v[2] ) == n)
			cout << fibos[idx-4] << " "<< fibos[idx-3] << " "<< fibos[idx-1] << endl;
		else
			cout << "I'm too stupid to solve this problem" << endl;
	}
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
#define ull unsigned long long int

ull fib[1000001]={0};

int main(){
	ull n ; cin >> n ;

	if( n==0 )
	{
		cout<< "0 0 0\n" ;
		return 0;
	}
	else if( n==1 )
	{
		cout << "0 0 1\n";
		return 0;
	}

	fib[0]=0;
	fib[1]=1 ;

	for( int i=2 ; i<=1000001 ; i++ )
		fib[i] = fib[i-1]+fib[i-2];

	for( ull i=2 ; i<= 1000001 ; i++ )
	{
		if( fib[i]== n ){
			cout << 0 << " "<< fib[i-2] << " " << fib[i-1] << endl;
			break;
		}
	}

	return 0;
}

#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <algorithm>
#include <vector>
#include <stdio.h>
#include <string>
#include <queue>
using namespace std;
__int64 a[200];
int n;
void solve(int m)
{
	int i, j, k;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < n; j++)
		{
			for (k = 0; k < n; k++)
			{
				if (a[i] + a[j] + a[k] == m)
				{
					printf("%I64d %I64d %I64d\n", a[i], a[j], a[k]);
					return;
				}
			}
		}
	}
	printf("I'm too stupid to solve this problem\n");
}
int main()
{
	a[0] = 0;
	a[1] = 1;
	int i;
	for (i = 2;; i++)
	{
		a[i] = a[i-2] + a[i-1];
		if (a[i] > 1000000000)
		{
			break;
		}
	}
	n = i;
	scanf("%d", &i);
	solve(i);

}

#include <iostream>
#include <cmath>
#include <string>
#include <sstream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
#include <iomanip>
#include <vector>
using namespace std;
typedef long long         ll;

int main()
{
	int n, c[4];
	bool occ = 0;
	cin >> n ;
	if (n == 0)
	{
		cout << "0 0 0";
		return 0;
	}
	else if (n == 1)
	{
		cout << "0 0 1";
		return 0;
	}

	c[0] = 0; c[1] = 1; c[2] = 1; c[3] = 2;

	while (c[3] != n)
	{

		c[0] = c[1];
		c[1] = c[2];
		c[2] = c[3];
		c[3] = c[2] + c[1];

	}

		cout << c[1] - c[0] << " " << c[0] << " " << c[2];

}

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int l = 50;
vector<ll> f;
// up to 46
void fib() {
    f.reserve(l + 1);
    for(int i = 0; i < l; i++) {
        if(i == 0)      f[i] = 0;
        else if(i == 1) f[i] = 1;
        else            f[i] = f[i-1] + f[i-2];
    }
}

int main() {
    fib();
    int n; cin >> n;

    for(int i = 0; i < l; i++) {
        for(int j = 0; j < l; j++) {
            for(int k = 0; k < l; k++) {
                if((f[i] + f[j] + f[k]) == n) {
                    cout << f[i] << " " << f[j] << " " << f[k] << endl;
                    return 0;
                }
            }
        }
    }

    cout << "I'm too stupid to solve this problem" << endl;
    return 0;
}

#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    //freopen("input.txt","r",stdin);
    int t = 2;
    vector<int> v;
    v.push_back(0);v.push_back(1);v.push_back(1);
    int f = 2;
    while(f <= 1000000000)
    {
        v.push_back(f);
        f = f + v[v.size() - 2];
    }
//while(t--)
{
    int n;
    cin >> n;
    int x=-1,y,z;
    for(int i = 0; i < v.size(); ++i)
    {
        if(v[i] > n)
            break;
        for(int j = 0; j < v.size(); ++j)
        {
            if(v[i]+v[j] == n)
            {
                x = v[i];
                y = v[j];
                z = 0;
                i = 100;
                break;
            }
            if(binary_search(v.begin(), v.end(),n-v[i]-v[j]))
            {
                x = v[i];
                y = v[j];
                z = n - v[i] - v[j];
                i = 100;
                break;
            }

        }
    }
    if(x==-1)
        cout <<  "I'm too stupid to solve this problem" << endl;
    else
    {
        cout << x << " " << y << " " << z << endl;
    }
}
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
void fibo();
long long fibos[100];
int main(){
    fibo();
    x:
    long long n;
    while(cin >> n){

        int t = 1;
        for(int i = 0 ; fibos[i] <= n; i++){
            for(int j = 0 ; fibos[j] <= n; j++){
                for(int k = 0 ; fibos[k] <= n; k++){
                    if(fibos[i]+fibos[j]+fibos[k] == n){
                        cout << fibos[i] << " "<< fibos[j] << " "<<fibos[k] << endl;
                        goto x;
                    }
                }
            }
        }if(1){
            cout << "I'm too stupid to solve this problem" <<endl;
        }
        t=1;
    }
    return 0;
}
void fibo(){
    fibos[0] = 0;
    fibos[1] = 1;
    for(int i = 2 ; i <= 70 ;i++){
        fibos[i] = fibos[i-1] + fibos[i-2];

    }
}

#include <iostream>

using namespace std;

int main()
{
    int n ;
    cin >> n ;
    cout<<"0 0 "<<n;
}

#include <bits/stdc++.h>
using namespace std;

#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define endl "\n"
#define int long long
#define ONLINE_JUDGE

const int N=1e5+5;
const int mod=1e9+7;

int i,j,n,cnt,m,t,a,b,bit;

int32_t main()
{
	#ifndef ONLINE_JUDGE
       freopen("qns.txt","r",stdin);
       freopen("ans.txt","w",stdout);
    #endif
       IOS;
        cin>>n;
        cout<<0<<" "<<0<<" "<<n<<endl;

	return 0;
}

#include<bits/stdc++.h>
using namespace std;
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define ll long long
#define pb push_back
long mod=pow(10,9)+7;
int countdivisors(int n)
{
      int count =0;
      for(int i=1;i<=sqrt(n);i++)
      {
            if(n%i==0)
            {
                  if(n/i==i)
                  {
                        count++;
                  }else
                  {
                        count=count+2;
                  }
            }
      }
      return count;
}
//to remove dublicate elements from a vector
void remove(std::vector<int> &v)
{
	auto end = v.end();
	for (auto it = v.begin(); it != end; ++it) {
		end = std::remove(it + 1, end, *it);
	}

	v.erase(end, v.end());
}
//to check if a no is perfect square or not
bool isPerfectSquare(ll x)
{
    ll s = sqrt(x);
    return (s*s == x);
}

// Returns true if n is a Fibonacci Number, else false
bool isFibonacci(ll n)
{
    return isPerfectSquare(5*n*n + 4) ||
           isPerfectSquare(5*n*n - 4);
}
int main()
{
      fast
      ll n;
      cin>>n;
      ll p=0;
      if(isFibonacci(n)==true )
              cout<<p<<" "<<p<<" "<<n;
      return 0;
}

#include <iostream>
#include <fstream>
#include <stdio.h>
#include <cstdio>
#include <cstdlib>
#include <iomanip>
#include <numeric>
#include <vector>
#include <math.h>
#include <algorithm>
#include <stack>
#include <cstring>

#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define REV_FOR(i,a,b) for(int i=a;i>=b;i--)
#define pb push_back
#define f first
#define s second

using namespace std;

int n;
int a[1000000];

main()
{
int n;
cin>>n;
if(n==0)
    {
       cout<<0<<" "<<0<<" "<<0;
       return 0;
          }
       if(n==1)
    {
       cout<<0<<" "<<0<<" "<<1;
       return 0;
      }
 if(n==2)
     {
        cout<<0<<" "<<1<<" "<<1;
        return 0;
        }
if(n==3)
    {
    cout<<1<<" "<<1<<" "<<1;
    return 0;
    }
a[0]=0;
a[1]=a[2]=1;
int i=3;
while(a[i-1]!=n)
    {
    a[i]=a[i-1]+a[i-2];
    i++;
    }
cout<<a[i-5]<<" "<<a[i-4]<<" "<<a[i-2];
}

#include <bits/stdc++.h>
using namespace std;
#define ll long long

int main(){
    // Go to Hell -_-
    // Dumbest idea ever
    // Amr Saud
    int n ;
    cin >> n ;
    cout << "0 0 " << n << endl ;
    return 0 ;
}

#include<bits/stdc++.h>

using namespace std;

int main(){

    int t;
    cin >> t;

    cout << "0 0 " << t ;

}

#include<cstdio>
#include<iostream>
#include<vector>
#include<string>
#include<stack>
#include<queue>
#include<bitset>

#include<algorithm>
#include<cmath>
using namespace std;

// Definitions

#define LL long long int
#define PB push_back
#define MP make_pair
#define PII pair<int,int>
#define VI vector<int>
#define VL vector<LL>
#define VII vector< vector<int> >
#define VLL vector< vector<LL> >
#define VP vector< PII >
#define S(a) scanf("%lld",&a)
#define St string
#define X first
#define Y second
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)

// Main Code

LL fib[50];
void init()
{  fib[0] = 0;
   fib[1] = 1;

   for(int i = 2 ; i < 50 ; i++ )
   {
          fib[i] = fib[i-1] + fib[i-2];
        //  cout << fib[i] << endl;
   }
  // cout << fib[50-1];
}

int solve()
{
   return 0;
   }

int main()
{
       init();
       LL n;
       //S(t);
       while(cin >> n)
       {
                 if( n < 0)
                 {
                      cout << "I'm too stupid to solve this problem" << endl ;
                      continue ;
                 }

                 if( n == 1)
                 {
                     cout << 0 << " " << 0 << " " << 1 << endl ;
                     continue ;
                 }

                 if( n == 0 )
                 {
                     cout << 0 << " " << 0 << " " << 0 << endl ;
                     continue ;
                 }

                 for( int i = 3 ; i < 50 ; i++ )
                 {
                      if( fib[i] == n )
                      {
                         // if( i < 5)
                         // cout <<  fib[i-4] << " " << fib[i-3] << " " << fib[i-1] << endl;
                         // else
                          cout <<  fib[i-3] << " " << fib[i-2] << " " << fib[i-2] << endl;
                          break ;
                      }
                 }
       }
   return 0;
}

#include<stdio.h>
int main()
{
	int x,a=0,b=0;

	while(scanf("%d",&x)!=EOF)
	{
		printf("%d %d %d\n",a,b,x);
	}

return 0;
}

#include <iostream>
using namespace std;

int main()
{
    long long a,b,c,n;
    cin>>n;
    a=0;
    b=1;
    c=a+b;
    while(c<n)
    {
        c+=b;
        b+=a;
        a=c-b;
    }
    if(c==n)
    cout<<b-a<<' '<<a<<' '<<a;
    else if(n==0)
        cout<<'0'<<' '<<'0'<<' '<<'0';
    else
        cout<<"I'm too stupid to solve this problem";

    return 0;
}

#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;

int main()
{
    int n;
    while(scanf("%d",&n)>0)
    printf("0 0 %d\n",n);
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
int main(){
	int n;
	cin >> n;
	cout << n << " 0 0";
}
//CF199A

#include <iostream>

using namespace std;

int main()
{
   int n;
   cin>>n;
   cout<<"0 0 "<<n<<endl;

    return 0;
}

#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
#include <cmath>
#include <numeric>
#include <functional>
#include <vector>
#include <set>
#include <map>
#include <iterator>
#include <algorithm>
using namespace std;
typedef long long ll;
int main()
{
    //ostream_iterator <int> output(cout," ");
    int n;
    cin>>n;
    cout<<0<<" "<<0<<" "<<n<<endl;
    return 0;
}

#include <cstdio>
#include <cstdlib>

#define N 10000

int arr[N],res[3];
int input,sum;

int main()
{
    int i=2,j,cnt=2,val;
    arr[0]=0,arr[1]=1;

    for(scanf("%d",&input);arr[i]<input;i++,cnt++){

        //if(cnt%5==0)
        //  putchar('\n');
        arr[i] = arr[i-1] + arr[i-2];
        if(arr[i] >= input)
            break;
      //  printf("%d ",arr[i]);
    }
   // printf("i : %d input : %d %d\n",i,input,cnt);
   // printf("arr: %d\n",arr[cnt]);
    val = input;

    for(i=2; i>=0 && input!=0; i--){

        for(j=0; j <= cnt; j++){
            if(input <= arr[j]){
    //          printf("%d\n",arr[j]);
                if(input < arr[j])
                    j--;
                break;
            }
        }
        res[i] = arr[j];
        input -= arr[j];
    }
   // printf("val : %d\n",val);
    if(res[0]+res[1]+res[2] == val)
        printf("%d %d %d\n",res[0],res[1],res[2]);

    else
        printf("I'm too stupid to solve this problem\n");
   // system("pause");
    return 0;
}

#include <bits/stdc++.h>
using namespace std;

int main() {
	int n;
    int a, b, c, aux = 1;
    cin >> n;
    vector<int> f;
    f.push_back(0);
    f.push_back(1);
    for(int i = 2; f[i-1] < n+1;i++){
        f.push_back(f[i-2] + f[i-1]);
        aux++;
    }
    for(int i = 0; i < aux;i++){
        a = f[i];
        for(int j = 0; j < aux;j++){
            b = f[j];
            for(int k = 0; k < aux; k++){
                c = f[k];
                if(a+b+c == n){
                    cout << a << " " << b << " " << c << endl;
                    return 0;
                }

            }
        }
    }
    cout << "I'm too stupid to solve this problem" << endl;
    return 0;
}

#include<stdio.h>
int f[1000000];
int Fibonacci()
{
    f[0]=0,f[1]=1;
    for(int i=2;i<1000000;i++)
        f[i]=f[i-1]+f[i-2];
    return 0;
}
int main()
{
    int n,i;
    Fibonacci();
    while(scanf("%d",&n)!=EOF)
    {
        int j,k,t;
        for(i=0;;i++)
            if(n==f[i])
            {
                t=i;
                break;
            }
        switch(n)
        {
        case 0:printf("0 0 0\n");break;
        case 1:printf("0 0 1\n");break;
        case 2:printf("0 1 1\n");break;
        default:printf("%d %d %d\n",f[t-4],f[t-3],f[t-1]);
        }
        //printf("I'm too stupid to solve this problem\n");
    }
    return 0;
}

#include<iostream>
using namespace std;

int main()
{
	long long n;
	long long a,b,c,x,y,z;

	while(cin>>n)
	{
		a=0;
		b=1;

		if(n==0)
			cout<<"0 0 0"<<endl;
		else if(n==1)
			cout<<"0 0 1"<<endl;
		else if(n==2)
			cout<<"0 1 1"<<endl;
		else if(n==3)
			cout<<"1 1 1"<<endl;
		else
		{
			c=a+b;
			while(n>c)
			{
				a=b;
				b=c;
				c=a+b;
			}
			z=b;
			n=n-b;
			a=0;
			b=1;
			c=a+b;
			while(n>c)
			{
				a=b;
				b=c;
				c=a+b;
			}
			y=b;
			x=n-b;
			cout<<x<<" "<<y<<" "<<z<<" "<<endl;

		}

	}

	return 0;
}

#include <iostream>

int main() {
	int n;
	std::cin >> n;
	std::cout << "0 0 " << n;
}

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_nback
#define pp pop_back

int main()
{
    ll n;
    cin>>n;

    if(n == 0) {
        cout<<0<<" "<<0<<" "<<0;
        return 0;
    }
    if(n == 1) {
        cout<<0<<" "<<0<<" "<<1;
        return 0;
    }
    if(n == 2) {
        cout<<0<<" "<<1<<" "<<1;
        return 0;
    }

    ll a = 2;
    ll b = 3;

    ll c;
    ll arr[5];
    arr[0] = 0;
    arr[1] = 1;
    arr[2] = 1;
    arr[3] = 2;
    arr[4] = 3;

    while(arr[4] != n)
    {
        c = a + b;
        a = b;
        b = c;

        int i = 0;
        while(i<4) {
            arr[i] = arr[i+1];
            i++;
        }

        arr[4] = c;
    }
    cout<<arr[0]<<" "<<arr[1]<<" "<<arr[3];

}

#include <iostream>
#include <cmath>
using namespace std;
int main ()
{
int a;
cin>>a;
cout<<a<<" "<<0<<" "<<0;
}

#include<iostream>
using namespace std;
int n;
int main()
{
	cin>>n;
	cout<<n<<" 0 0";
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	cin>>n;
	cout<<n<<" 0 0";
	return 0;
}

#include <iostream>
using namespace std;

int main() {
	int n;
	cin>>n;
	int ar[45];
	ar[0]=0;
	ar[1]=1;
	for(int i=2;i<45;i++){
		ar[i]=ar[i-1]+ar[i-2];

	}
	bool flag=true;;
  for(int i=0;i<=42;i++){
  	for(int j=0;j<=43;j++){
  		for(int k=0;k<=44;k++){
  			if(ar[i]+ar[j]+ar[k]==n){
  				cout<<ar[i]<<" "<<ar[j]<<" "<<ar[k];
  				flag=false;
  				break;
  			}

  		}
  			if(flag==false) break;
  	}
  		if(flag==false) break;
  }
  if(flag) cout<<-1;

	return 0;
}

#include<iostream>
#include<iomanip>
#include<map>
#include<algorithm>
#include<cmath>
#include<stack>
#include<queue>
#include<vector>
#include<cctype>
#include<string>
#include<stdlib.h>
using namespace std;

int main()
{
   long long n;
   cin>>n;
   cout<<"0 0 "<<n;
return 0;

}

#include<bits/stdc++.h>
using namespace std;
int n;
int main(){
    scanf("%d",&n);
    printf("%d 0 0",n);
    return 0;
}

/**-------------------------
|--------From A.R.A--------|
-------------------------**/

#include <bits/stdc++.h>

#define ll            long long int
#define pb            push_back
#define ull           unsigned long long int
#define endl          "\n"
#define sz(c)         (c).size()
#define sall(c)       sort((c).begin(),(c).end())
#define rsall(c)      sort((c).rbegin(),(c).rend())
#define rev(c)        reverse((c).begin(),(c).end())
#define FOR(i,n)      for(ll i=0;i<n;i++)
#define max3(a,b,c)   max(max(a,b),c)
#define min3(a,b,c)   min(min(a,b),c)
#define input(a,i,n)  for(ll i=0;i<n;i++){      cin>>a[i];}
#define output(a,i,n) for(ll i=0;i<n;i++){cout<<a[i]<<" ";}

using namespace std;
int64_t R=1;
void solution(){
    int64_t n;
    cin>>n;
    cout<<"0 0 "<<n<<endl;
}
int main()
{
    FOR(i,R){solution();}
    return 0;
}

#include<iostream>

using namespace std;

int main()
{
    int fibo[46], n;

    fibo[0] = 0; fibo[1] = 1;

    for(int i = 2; i < 46; i++) fibo[i] = fibo[i - 1] + fibo[i - 2];

    cin >> n;

    int a, b, c, i;

    i = 0;

    while(fibo[i] <= n) i++;

    i--;

    if(fibo[i] == n) cout << fibo[i] << " 0 0";
    else
    {
        a = fibo[i];

        n -= fibo[i];

        i = 0;

        while(fibo[i] <= n) i++;

        i--;

        if(fibo[i] == n) cout << a << " " << fibo[i] << " 0";
        else
        {
            b = fibo[i];

            n -= fibo[i];

            i = 0;

            while(fibo[i] <= n) i++;

            i--;

            if(fibo[i] == n) cout << a << " " << b << " " << fibo[i];
            else cout << "I'm too stupid to solve this problem";
        }
    }
}

#include <iostream>
using namespace std;

int main()
{
    long long int num;
    cin>>num;

    int fib[3];

    fib[0] = 0;
    fib[1] = 1;
    fib[2] = 1;

    long long int count = 1;

    int found = 0;

    if(num ==0||num==1)
    found =1;

    while(fib[2]<= num)
    {
        fib[0] = fib[1];
        fib[1] = fib[2];
        fib[2] = fib[1] + fib[0];

        if(fib[count] == num)
        found = 1;

    }

    if(found == 0)
    cout<<"I'm too stupid to solve this problem"<<endl;
    else
    cout<<"0 "<<"0 "<<num;
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;

int main()
{
    vector<ll>arr(50,0);
    arr[1]=1;
    for(int i=2;i<=44;i++)
    {
        arr[i] = arr[i-1]+arr[i-2];
    }
    ll n;
    cin>>n;
    if(n==1)
    {
        cout<< "0 0 1" ;
        exit(0);
    }
    else if(n==0)
    {
        cout<<"0 0 0";
        exit(0);
    }
    int ind = find(arr.begin(),arr.end(),n)-arr.begin();
    cout<< arr[ind-3]<<" "<<arr[ind-2]<<" "<<arr[ind-2]<<endl;
    return 0;
}

#include <iostream>
#include<stdio.h>
#include<algorithm>
#include<string>
#include<cmath>
#include<math.h>
#include<iomanip>
#include<set>
#include<stack>
#include<queue>
#include<map>
#include<cstring>
//        #include"myfirstfunction.h"
using namespace std;
//#define x 1
int main(){

//
//    char matrix[9][9];
//    short p=0;
//    for(short i=0;i<9;i++){
//        for(short j=0;j<9;j++){
//            if(i==j||(i+j==8)||j==9/2||i==9/2){
//                matrix[i][j]='x';
//            }
//            else if(i!=j){
//                matrix[i][j]='o';
//            }
//            cout<<matrix[i][j]<<" ";
//
//        }
//        cout<<endl;
//        p++;
//    }
////cout btfdl ma4ia l8aet matla2y '\0' w malha4 3elaqa b size el array
//char arr[101];//23mel 7esab el null character l2eoh mmkn yda5aly 100 character
//cin>>arr;
//int x=strlen(arr);
//bool found =false;
//for(int i=0;i<x;i++){
//    if(arr[i]=='H'||arr[i]=='Q'||arr[i]=='9'){
//        cout<<"YES";
//        found=true;
//        break;
//    }
//}
//if(found==false){
//    cout<<"NO";
//}

//int n;
//cin>>n;
//short arr[n];
//for(int i=0;i<n;i++){
//    cin>>arr[i];
//}
//sort(arr,arr+n);
//bool found=false;
//for(int i=0;i<n-2;i++){
//    if(arr[i]<arr[i+1]&&arr[i+1]<arr[i+2]&&arr[i+1]%arr[i]==0&&arr[i+2]%arr[i+1]==0){
//        cout<<arr[i]<<" "<<arr[i+1]<<" "<<arr[i+2]<<endl;
//        found=true;
//
//    }
//}
//if(found==false)
//    cout<<"-1";
//
//int x,y;
//cin>>x>>y;
////string s1,s2;
////cin>>s1>>s2;
//cout<<"add= "<<calculator(x,y)<<endl;
////cout<<"conc= "<<add(s1,s2)<<endl;
//
//int d;
//cin>>d;
//string s;
//cin>>s;
//cout<<printt(s,d);

//int n;
//cin>>n;
//int num;
//int x,y,size1,size2;
//for(int i=0;i<n;i++){
//    cin>>num;
//if(num==n){
//    x=i;
//}
//else if(num==1){
//    y=i;
//}
//}
////cout<<x<<","<<y<<endl;
//if(x<y){
//    size1=x-0;
//    size2=(n-1)-y;
//    if(size1>size2){
//        cout<<size1+(y-x);
//    }
//    else{
//        cout<<size2+(y-x);
//    }
//}
//else{
//    size1=y-0;
//    size2=(n-1)-x;
//    if(size1>size2){
//        cout<<size1+(x-y);
//    }
//    else{
//        cout<<size2+(x-y);
//    }
//}

int n;
cin>>n;
int one=0,two=1,sum;
if(n==0){
    cout<<0<<" "<<0<<" "<<0;
}
else if(n==1){
    cout<<0<<" "<<0<<" "<<1;
}
else{
    while(2){
        sum=one+two;
        if(sum==n){
            break;
        }
        one=two;
        two=sum;
    }
    cout<<0<<" "<<one<<" "<<two;
}
return 0;
}

//http://codeforces.com/problemset/problem/199/A
#include<iostream>
#include<cstdlib>
#include<vector>
#include <algorithm>
using namespace std;

int main(int argv,char * argc){

    int n,a=0,b=1,sum=0;
    cin>>n;

    vector<int>x;
     x.push_back(a);
      x.push_back(b);
    vector <int >::iterator it1;
     vector <int >::iterator it2;
      vector <int >::iterator it3;

    while(a!=n){
         swap(a,b);
         b=a+b;
         if (b!=n)
          x.push_back(b);
         else break;
            }

   for(it1=x.begin();it1!=x.end();it1++){
                 sum=0;
                 sum+=*it1;
    for(it2=x.begin();it2!=x.end();it2++){
                 if (sum!=0){
                  sum=0;
                  sum+=*it1;
                             }
                 sum+=*it2;
        for(it3=x.begin();it3!=x.end();it3++){
                    sum+=*it3;
                   if(sum!=n){
                       sum-=*it3;
                              }
                   else if (sum==n){
                   cout<<*it1<<" "<<*it2<<" "<<*it3<<endl;

                      return 0;
                               }
                                }
               }
               }
        cout<<"I'm too stupid to solve this problem";

    return 0;

    };

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
  int n;
  cin>>n;
  cout<<0<<" "<<0<<" "<<n;

 }

#include <bits/stdtr1c++.h>

using namespace std;

typedef long double ld;
typedef long long ll;
typedef pair<ll, ll> pii;
typedef complex<ld> pt;

set<int> fib;
int main() {
  ll a = 0, b = 1;
  while (b < 1e10) {
    fib.insert(a);
    swap(a,b);
    b = a+b;
  }
  ll n;
  cin >> n;
  for (int f: fib) {
    if (fib.count(n-f)) {
      cout << 0 << " " << f << " " << n-f << endl;
      return 0;
    }
  }
  for (int f: fib) {
    for (int g: fib) {
      if (fib.count(n-f-g)) {
        cout << f << " " << g << " " << n-f-g << endl;
        return 0;
      }
    }
  }
    return 0;
}

#include <cmath>
#include <cstdlib>
#include <cstdio>
#include <iostream>
#include <iomanip>
#include <map>
#include <queue>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <string>
#include <bitset>
#include <algorithm>
#include <cstring>

using namespace std;

#define rep(i,a,b) for(int i = (a); i < int(b); ++i)
#define rrep(i, a, b) for(int i = (a) - 1; i >= b; --i)
#define trav(it, v) for(__typeof((v).begin()) it = (v).begin(); it != (v).end(); ++it)
#define all(v) (v).begin(), (v).end()

typedef double fl;
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<pii> vpi;

template<typename T>
istream& operator>>(istream& in, vector<T> &v) {
    rep(i,0,v.size()) in >> v[i];
    return in;
}

template<typename A, typename B>
istream& operator>>(istream& in, pair<A, B> &p) {
    in >> p.first >> p.second;
    return in;
}

template<typename T>
ostream& operator<<(ostream& out, vector<T> &v) {
    if(v.size()) out << v[0];
    rep(i,1,v.size()) out << ' ' << v[i];
    return out;
}

template<typename A, typename B>
ostream& operator<<(ostream& out, pair<A, B> &p){
    out << p.first << ' ' << p.second;
    return out;
}

int main(){
    int n;
    cin >> n;
    if(n == 0) cout << "0 0 0" << endl;
    else {
        int a = 0, b = 1;
        while(a + b != n){
            b = a + b;
            a = b - a;
        }
        cout << 0 << ' ' << a << ' ' << b << endl;
    }
}

/*
 * File:   main.cpp
 * Author: vovan
 *
 * Created on 18 Июнь 2012 г., 13:35
 */

#include <iostream>
#include <iomanip>
#include <vector>
#include <set>
#include <fstream>
#include <sstream>
#include <exception>
#include <stdexcept>
#include <cstdlib>

using namespace std;

int main(int argc, char** argv) {
    int n;
    cin>>n;
    if(n==0){
        cout<<"0 0 0";
        return 0;
    }
    cout<<n<<" 0"<<" 0";
    return 0;
}

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
	int n, f = 0, s = 1,t=0,a=0;
	bool is_true = false;
	cin >> n;

	if (n == 0)
	{
		cout << 0 << " " << 0 << " " << 0 << endl;
	}
	else
	{
		while (t <= n)
		{
			t = f + s;
			if (t == n){ is_true = true; break; }
			f = s;
			s = t;
		}
		if (is_true)
		{
			cout << 0 << " " << f << " " << s << endl;
		}
		else{ cout << "I'm too stupid to solve this problem\n"; }
	}
}

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    cin >> n;
    printf("0 0 %d\n",n);

}

#include <iostream>
#include <cmath>
#include <iomanip>
#include <string>
#include <cstring>
#include <cstdio>
#include <math.h>
#include <algorithm>
#include <stdio.h>
#include <climits>
#include <stack>
#include <queue>
using namespace std;
int main(){
    int n;
    cin >> n;
    cout << "0" << " " << "0 " << n << endl;
}

#include <iostream>
#include <string>
#include <cmath>
#include <cstdlib>
#include <algorithm>
#include <sstream>

using namespace std;

int main()
{
    int n;
    cin >> n;
    cout  << "0 0 " << n;
    return 0;
}

#include <bits/stdc++.h>
using namespace std;
void input()
{
  #ifndef ONLINE_JUDGE
  freopen("input.txt","r",stdin);freopen("output.txt","w",stdout);
  #endif
}
typedef long long int ll;
#define rep(i,a,b) for( ll i=a;i<b;i++)
#define rrep(i,a,b)for(ll i=a;i>=b;i--)
#define pb(a) push_back(a)
#define mp(a,b) make_pair(a,b)
#define f first
#define s second
#define mod 1000000007
bool compare(pair<int,int>a,pair<int,int>b)
{
  return a.f<b.f;
}
int main()
{
  input();
  ios_base::sync_with_stdio(0);
    cin.tie(0);
  ll arr[100]={};
  arr[1]=1;
  rep(i,2,51)
  {
    arr[i]=arr[i-1]+arr[i-2];
  }
  ll n;
  cin>>n;
  if(n==0)cout<<"0 0 0";
  rep(i,2,51)
  {
    if(n==arr[i])
    {
      cout<<arr[i-1]<<" "<<arr[i-2]<<" "<<0;
      return 0;
    }
  }
}

#include<bits/stdc++.h>
#define ull unsigned long long int
using namespace std;
ull fibs[51] = {0};
ull fib(int n)
{
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(fibs[n] != 0) return fibs[n];
    else fibs[n] = fib(n - 1) + fib(n - 2);
    return fibs[n];
}
int main()
{
    ull a = fib(51);
    ull n;
    cin>>n;
    for(int i = 0; i <= 50; i++)
    {
        if(n == 0)
        {
            cout<<0<<' '<<0<<' '<<0<<'\n';
            return 0;
        }
        if(n == 1)
        {
            cout<<0<<' '<<0<<' '<<1<<'\n';
            return 0;
        }
        if(n == 2)
        {
            cout<<0<<' '<<1<<' '<<1<<'\n';
            return 0;
        }
        if(fibs[i] == n)
        {
            cout<<0<<' '<<fibs[i - 1]<<' '<<fibs[i - 2]<<'\n';
            return 0;
        }
    }
    cout<<"I'm too stupid to solve this problem\n";
    return 0;
}

#include<iostream>
#include<bits/stdc++.h>
using namespace std;
int main(){

    long long int n;
    cin>>n;
    long long int i,j,k;
    long long int sum1,sum2;
    long long int v[10000]={0};
    v[0]=0,v[1]=1,v[2]=1;
    //cout<<n<<ends<<v[0]<<ends<<v[1];
    if(n==0){
        cout<<"0 0 0";
    }
    else if(n==1){
      cout<<"0 0 1";
    }
    else if(n==2){
      cout<<0<<" "<<1<<" "<<1;
    }
    else if(n==3){
      cout<<1<<" "<<1<<" "<<1;
    }
    else{
      sum1=0,sum2=1;
      int sum=1;
      i=3;
      while(sum<=n){
        sum1=sum2;
        sum2=sum;
        sum=sum1+sum2;
        v[i]=sum;
        i++;
      }
      cout<<v[i-3]<<" "<<v[i-5]<<" "<<v[i-6];

    }
    return 0;
}
/*/
sum1=sum2;
sum2=sum;
sum=sum1+sum2;
*/

#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#include<queue>
#include<string>
#include<cmath>
#include<cstdint>
//#include<>
using namespace std;

typedef int64_t i64;typedef int32_t i32;
typedef int16_t i16;typedef int8_t i8;
typedef uint64_t ui64;typedef uint32_t ui32;
typedef uint16_t ui16;typedef uint8_t ui8;

typedef i32 int__;
#define rep(i,j) for(int__ i=0;i<j;i++)
#define repeat(i,j,k) for(int__ i=(j);i<(k);i++)
#define repeat_eq(i,j,k) for(int__ i=(j);i<=(k);i++)
#define all(v) begin(v),end(v)

const i32 INF=1<<30;//=10E10

vector<i64> fib;
string cant="I'm too stupid to solve this problem";

i64 makefib(i64 num){
  if(fib[num]>=0)return fib[num];
  fib[num]=makefib(num-1)+makefib(num-2);
  return fib[num];
}

int main()
{
  fib.resize(101,-1);
  fib[0]=0;
  fib[1]=1;

  i64 n;cin>>n;
  makefib(50);
  i64 here=-1;
  rep(i,50){
    if(fib[i]==n)here=i;
  }
  if(here<0)cerr<<"err";
  else{
    if(here==0){
      printf("%d %d %d\n",0,0,0);
    }
    else if(here==1){
      printf("%d %d %d\n",0,0,1);
    }
    else
      cout<<0<<" "<<fib[here-1]<<" "<<fib[here-2]<<endl;
  }

  return 0;
}

#include<iostream>
using namespace std;
int main(){
    int n; cin >> n; cout << n << " 0 0";
}

#include <string>
#include <vector>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <ctime>
#include <list>
#include <map>
#include <set>
#include <bitset>
#include <functional>
#include <utility>
#include <iostream>
#include <fstream>
#include <sstream>
#include <string.h>
#include <ctype.h>
#include <cstring>
#include <stack>
#include <queue>
#include <deque>
#include <new>
#include <iterator>
#include <math.h>
#include <conio.h>
using namespace std;

int main() {
  long long n;
  cin>>n;
  cout<<"0 0 "<<n<<endl;
  return 0;
}

#include <iostream>
using namespace std;

int main() {
	// your code goes here
	long long int a,b,c,d,e,in;
	cin>>in;
	a=0;b=1;
	if(in>3)
	{while(1)
	{c=a+b;
	 d=b+c;
	 e=c+d;

	if(e==in)
	{
		cout<<a<<' '<<b<<' '<<d;
		break;
	}
	a=b;
	b=c;
	}}
	else if(in==3)
	cout<<"1 1 1";
	else if(in==2)
	cout<<"0 1 1";
	else if(in==1)
	cout<<"0 0 1";
	else if(in==0)
	cout<<"0 0 0";
	else cout<<"I'm too stupid to solve this problem";
	return 0;
}

#include<stdio.h>
main()
{
	int n;
 	while(scanf("%d",&n)!=EOF)
	printf("0 0 %d\n",n);
}

#include<iostream>
#include<algorithm>
#include <sstream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
    long long t; cin >>t;
    long long *arr=new long long[100];
    arr[0]=0;arr[1]=1;
    if(t==1){cout<<"0 "<<"0 "<<"1\n";return 0;}
    for(int i=0;i<60;i++)
    {
        arr[i+2]=arr[i+1]+arr[i];
    }
    for(int i=0;i<100;i++)
    {
        if(arr[i]==t)
        {
            if(arr[i-2]+arr[i-3]+arr[i-3]==t){
                cout <<arr[i-3]<<" "<<arr[i-3]<<" "<<arr[i-2]<<endl;}
            else if(arr[i-1]+arr[i-3]+arr[i-4]==t){
            cout <<arr[i-4]<<" "<<arr[i-3]<<" "<<arr[i-1]<<endl;}
            else if(arr[i-1]+arr[i-1]+arr[i-2]==t){
                cout <<arr[i-2]<<" "<<arr[i-1]<<" "<<arr[i-1]<<endl;}
            else if(arr[i-1]+arr[i-2]+arr[i-2]==t){
                    cout <<arr[i-2]<<" "<<arr[i-2]<<" "<<arr[i-1]<<endl;}
            else if(arr[i-1]+arr[i-2]+arr[i-3]==t){
                    cout <<arr[i-3]<<" "<<arr[i-2]<<" "<<arr[i-1]<<endl;}
            else{cout<<"I'm too stupid to solve this problem"<<endl;}
            return 0;
        }
    }
    cout<<"I'm too stupid to solve this problem"<<endl;
}

// Bismillahir Rahmanir Rahim
#include<bits/stdc++.h>
#include<iomanip>
typedef long long ll;
typedef unsigned long long ul;
#define pi acos(-1)
#define ll long long
#define ull unsigned long long
#define vec vector<ll>
#define f1(i,n) for(i=1;i<n;i++)
long long int i,j;
using namespace std;
int main()
{
    ll n;cin>>n;
    cout<<"0 0 "<<n;
}

// Sifat Shishir

#include<stdio.h>
#include <cstring>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<queue>
#include<map>
#include<stack>
#include<set>
#include<utility>

using namespace std;

#define ll long long

int main()
{
   // fibo();
    ll n,m,p=0;

    cin>>n;
    cout<< "0 0 "<<n<<endl;

    return 0;
}

#include<iostream>
using namespace std;

int main()
{

	int n,z=0;

	cin>>n;

	cout<<""<<z<<" "<<z<<" "<<n;

	return(0);

}

#include<bits/stdc++.h>
using namespace std;

#define ll long long

ll ara[100010];

void check(ll *ara) {
    for(int i=1;i<=50;i++) {
        cerr<<ara[i]<<endl;
    }
}
int main(int argc,char const *argv[]) {
    ll n;
    cin>>n;
    ara[0]=0,ara[1]=1;
    for(int i=2;i<=50;i++) {
        ara[i]=ara[i-1]+ara[i-2];
    }
    check(ara);
    if(n==0) {
        cout<<"0 0 0"<<endl;
        return 0;
    }
    if(n==1) {
        cout<<"1 0 0"<<endl;
        return 0;
    }
    if(n==2) {
        cout<<2<<" "<<0<<" "<<0<<endl;
        return 0;
    }
    for(int i=0;i<=50;i++) {
        if(ara[i]==n) {
            cout<<ara[i-1]<<" "<<ara[i-3]<<" "<<ara[i-4]<<endl;
            return 0;
        }
    }
    return 0;
}

#include <iostream>
using namespace std;
int main(){
int n;
cin >> n;
cout << 0 << " " << 0 << " " << n << endl;
return 0;
}

#include <stdio.h>
long long fib[50];
void f()
{
    int i;
    fib[0]=0;
    fib[1]=1;
    fib[2]=1;
    for(i=3;i<50;i++)
    {
        fib[i]=fib[i-1]+fib[i-2];
    }
}
int main()
{
    long long n;
    long long a;
    long long b;
    long long c;
    int ok;
    int i;
    int j;
    int k;
    f();
    while(scanf("%lld",&n)!=EOF)
    {
        ok = 0;
        for(i=0;i<50;i++)
        {
            a = fib[i];
            for(j = 0;j<50;j++)
            {
                b = fib[j];
                for(k=0;k<50;k++)
                {
                    if(fib[k]>(n-a-b))
                    {
                        break;
                    }
                    if((n-a-b)==fib[k])
                    {
                        c = fib[k];
                        ok = 1;
                        break;
                    }
                }
                if(ok==1)
                {
                    break;
                }
            }
            if(ok==1)
            {
                break;
            }
        }
        if(ok == 1)
        {
            printf("%lld %lld %lld\n",a,b,c);
        }
        else
        {
            printf("I'm too stupid to solve this problem\n");
        }
    }
    return 0;
}

/// In the name of GOD
/// I love my MOTHER
/// Only GOLD emes, Qazіr - Barǵa Shúkіrshіlіk:)
/// Come Back with another AIMS

#include <bits/stdc++.h>

#define sz(s)           (ll)(s.size())
#define all(x)          x.begin(), x.end()

#define pb              push_back
#define pf              push_front
#define F               first
#define S               second
#define mp              make_pair
#define ARO             exit(0);
#define nl              endl
#define db              double

#define TL              clock() / (double)CLOCKS_PER_SEC
#define NFS             ios_base :: sync_with_stdio(0), cin.tie(0), cout.tie(0);
#define rep(i, l, r)    for(int i = (l); i <= (r); i++)
#define per(i, l, r)    for(int i = (l); i >= (r); i--)

using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;

const double pi = acos(-1.0);
const double eps = 1e-9;
const int mod = 1e9 + 7;
const ll INF = 1e18 + 1;
const ll inf = 1e12 + 1;
const int N = 2e5 + 9;

int n;
int f[N];

int main(){
    NFS

    f[0] = 0;
    f[1] = f[2] = 1;
    cin >> n;
    for(int i = 3; i <= 45; ++i){
        f[i] = f[i - 1] + f[i - 2];
    }

    for(int i = 0; i <= 45; ++i){
        for(int j = 0; j <= 45; ++j){
            for(int q = 0; q <= 45; ++q){
                if(f[i] + f[q] + f[j] == n){
                    cout << f[q] << " " << f[j] << " " << f[i];
                    ARO
                }
            }
        }
    }

    ARO
}

#include<cstdio>
#include<cstdlib>
#include<vector>
#include<map>
#include<set>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
#include<queue>
#include<iostream>

using namespace std;

#define fr(a,b,c) for(int a = b; a < c; a++)
#define rep(a,b) fr(a,0,b)
#define ln puts("")

typedef long long ll;

int n;

bool read(){
	if(scanf("%d", &n) == EOF) return false;

	return true;
}

ll fib[11111];
int size;

void process(){
	rep(i,60){
		rep(j,60){
			rep(k,60){
				if(fib[i] + fib[j] + fib[k] == n){
					cout << fib[i] << " " << fib[j] << " " << fib[k] << endl;
					return;
				}
			}
		}
	}

	printf("I'm too stupid to solve this problem\n");
}

int main(){
	fib[0] = 0;
	fib[1] = 1;

	fr(i,2,100){
		size = i;
		fib[i] = fib[i-1] + fib[i-2];

	}

	while(read()) process();

	return 0;
}

#include<iostream>
using namespace std;
long long n;
int main()
{
	while(cin>>n){
	cout<<"0 0 "<<n<<endl;
	}
	return 0;
}

#include<stdio.h>
int main()
{
int a;
scanf("%d",&a);
printf("%d 0 0",a);
return 0;
}

#include <iostream>
#include <unordered_map>
#include <vector>
#include <set>
#include <algorithm>
#define ll long long
#define pr pair<int,int>
#define all vec.begin(),vec.end()
#define REP(i,a,b) for (int i = a; i < b; i++)
#define fi first
#define se second
#define pushb push_back
#define makep make_pair

using namespace std;

int main(){
	int n;
	cin >> n;
	if(n == 1){
		cout << 1 << " " <<  0 << " " << 0;
		return 0;
	}
	if(n == 0){
		cout << 0 << " " <<  0 << " " <<  0;
		return 0;
	}
	int a = 0, b = 1;
	while(a+b != n){
		int temp = b;
		b = b + a;
		a = temp;
	}
	cout << 0 << " " << a << " " << b;
	return 0;
}

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n,a,b,c,p=0,i,k,j;

    a=0;
    b=1;
    c=0;

    cin>>n;
    if(n==0)
    {
        cout<<"0 0 0"<<endl;
        return 0;
    }

    while(c<n)
    {
        a=b;
        b=c;
        c=a+b;

    }

cout<<a<<" "<<b<<" "<<0<<endl;

}

#include <iostream>
using namespace std;
int a,b=0,s=0,p[1000],aa[100];
void back(int n,int sum)
{
    if(n==3 && b==0)
    {
        if(sum==a){
            b=1;
                for(int i=0;i<n;i++)
                {
                    cout<<aa[i]<<" ";
                }
                cout<<endl;
            }
    }
    else
    if(b==0)
    {
        for(int i=0;i<s;i++)
        {
                aa[n]=p[i];
                back(n+1,sum+p[i]);
        }
    }
}
int main(){
__int64 i,j,k=0;
cin>>a;
p[0]=0;
p[1]=1,p[2]=1,i=2;
while(1)
{
    i++;
    p[i]=p[i-1]+p[i-2];
    if(a<=p[i]) break;
}
s=i;
back(0,0);
if(b==0 && a!=0)
{
   cout<<"I'm too stupid to solve this problem"<<endl;

}

return 0;
}

#include <iostream>
using namespace std;

int main()
{
    long long a,b,c,n;
    cin>>n;
    a=0;
    b=1;
    c=a+b;
    while(c<n)
    {
        c+=b;
        b+=a;
        a=c-b;
    }
    if(c==n)
    cout<<b-a<<' '<<a<<' '<<a;
    else if(n==0)
        cout<<'0'<<' '<<'0'<<' '<<'0';
    else
        cout<<"I'm too stupid to solve this problem";

    return 0;
}

#include <iostream>
#include<string>
#include<algorithm>
#include<math.h>
using namespace std;
long long dp[100];
int main()
{
    int n,x,y,z,sum=0;
    cin>>n;
       long long a=0,b=1,c;
    for(int i=0;i<=50;i++)
    {
        c=a+b;
        a=b;
        b=c;
        dp[i]=a;

    }
    if(n<=2)
    {
        if(n==0)
        cout<<"0"<<" "<<"0"<<" "<<"0";
    if(n==1)
    cout<<"0"<<" "<<"0"<<" "<<"1";
    if(n==2)
    cout<<"0"<<" "<<"1"<<" "<<"1";
    }

    else
    {
        int flag(0);
    for(int i=0;dp[i]<n;i++)
    {
        for(int j=i;dp[j]<n;j++)
        {
            for(int k=j;dp[k]<n;k++)
            {
                sum=dp[i]+dp[j]+dp[k];
                if(sum==n)
                {
                x=dp[i];
                y=dp[j];
                z=dp[k];
                flag=1;
                break;
                }
                else if(sum>n)
                {
                    flag=0;
                    break;
                }

            }
         if(flag==1)
         break;

        }
        if(flag==1)
        break;
    }
    if(sum!=n)
    cout<<"I'm too stupid to solve this problem"<<endl;
    else
    cout<<x<<" "<<y<<" "<<z;

    }
   return 0;
}

#include<iostream>
#include<string>
#include<fstream>
#include<algorithm>
#include<cmath>
#include<map>
#include<cstdlib>
#include<vector>
#include<set>
#include<deque>
using namespace std;
ofstream fo("test.out");
ifstream fi("test.inp");
#define For(i,n) for (long long(i) = 0; (i)<(n); (i)++)
#define For1(i,n) for (long long(i) = 1; (i) <= (n); (i)++)
#define Forlr(i,l,r) for (long long(i) = (l); (i) <= (r); (i)++)
#define Forrl(i,r,l) for (long long(i) = (r); (i) >= (l); (i)--)
#define ll long long
#define pb push_back
#define pp pop_back
#define mp make_pair
const ll MOD = 1e9 + 7;
const ll base = 269;
const int oo = 1 << 30;
const int N = 1e5 + 5;
ll P(ll x, ll y) // x^y
{
	ll ret = 1;
	while (y > 0)
	{
		if (y & 1) ret *= x;
		y /= 2;
		x = x * x;
	}
	return ret;
}
ll GCD(ll a, ll b)
{
	return (b ? GCD(b, a%b) : a);
}
int gi() {
	int w = 0; bool q = 1; char c = getchar();
	while ((c<'0' || c>'9') && c != '-') c = getchar();
	if (c == '-') q = 0, c = getchar();
	while (c >= '0'&&c <= '9') w = w * 10 + c - '0', c = getchar();
	return q ? w : -w;
}
namespace io {
	const int L = (1 << 21) + 1;
	char ibuf[L], *iS, *iT, obuf[L], *oS = obuf, *oT = obuf + L - 1, c, st[55]; int f, tp;
#define gc() (iS==iT?(iT=(iS=ibuf)+fread(ibuf,1,L,stdin),(iS==iT?EOF:*iS++)):*iS++)
	inline char getc() {
		return gc();
	}
	inline void flush() {
		fwrite(obuf, 1, oS - obuf, stdout);
		oS = obuf;
	}
	inline void putc(char x) { *oS++ = x; if (oS == oT) flush(); }
	template<class I> inline void gi(I&x) {
		for (f = 1, c = gc(); c<'0' || c>'9'; c = gc()) if (c == '-') f = -1;
		for (x = 0; c <= '9'&&c >= '0'; c = gc()) x = x * 10 + (c & 15); x *= f;
	}
	template<class I> inline void print(I x) {
		if (!x) putc('0');
		if (x < 0) putc('-'), x = -x;
		while (x) st[++tp] = x % 10 + '0', x /= 10;
		while (tp) putc(st[tp--]);
	}
	inline void gs(char*s, int&l) {
		for (c = gc(); c<'0' || c>'1'; c = gc());
		for (l = 0; c <= '1'&&c >= '0'; c = gc()) s[l++] = c;
		s[l] = 0;
	}
	inline void ps(const char*s) { for (int i = 0, n = strlen(s); i < n; i++) putc(s[i]); }
	struct IOFLUSHER { ~IOFLUSHER() { flush(); } } _ioflusher_;
};
using io::getc;
using io::putc;
using io::gi;
using io::gs;
using io::ps;
using io::print;
//using io::printld; //print(f) output double

/*
MIKUNO - 15/02/1999
*/

ll n, m, q, k, pos, rs, x, id = 1;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	cin >> n;
	cout << n << " 0 0";
}

#include<stdio.h>
int main()
{
    int n;
	while(scanf("%d",&n)!=EOF)
	printf("%d %d %d\n",0,0,n);
return 0;
}

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int n, p;
    cin >> n;
    if ( n == 0)
        cout << "0 0 0" << endl;
    else
    {
        int a[ n + 5];
        a[0] = 0;
        a[1] = 1;
        for ( int i = 2 ;  i <= n ; i++)
            a[ i ] = a[ i - 1] + a[ i - 2];
        for ( int i = 2 ;  i <= n ; i++)
        {
            if ( a[i] == n)
                p = i ;
        }
        int x = a[ p - 1];
        int y = a[ p- 2];

        if (x + y == n)
            cout << "0 " << y <<" " << x << endl;
    }
    return 0;
}

#include<iostream>

using namespace std;

int main() {
	long long N; cin >> N;
	if (N == 0)
		cout << 0 << ' ' << 0 << ' ' << 0;
	int a = 0, b = 1;
	while (a + b < N) {
		a = a + b;
		b = a - b;
	}
	if (a + b == N) {
		cout << 0 << ' ' << 0 << ' ' << N;
	}
	else
		cout << "I'm too stupid to solve this problem";
	return 0;
}

#include <iostream>
using namespace std;

long long fib(long long x)
{
    long long a{},b{1},sum{};
    for(int t=0;t<x-1;t++)
    {
        sum=a+b;
        a=b;
        b=sum;
    }
    return sum;
}

int main()
{
    long long n;
    cin >> n;
    int t{}, i{1};
    while(t==0)
    {
        if(n<fib(i))
            t++;
        if(n==fib(i))
            t+=2;
        else
            i++;
    }
    if(t==2)
        cout << "0 " << fib(i-2) << " " << fib(i-1) << endl;
    else
        cout << "I'm too stupid to solve this problem" << endl;
}

#include<bits/stdc++.h>

using namespace std;
long long int a[10005];
int main()
{
    long long int i,j,k,n,ans=0,m,s,f1,f2;
    a[0]=0;
    a[1]=1;
    f1=0;
    f2=1;
    i=2;
    while(i<10)
       {
           a[i]=f1+f2;
           f1=f2;
           f2=a[i];
           if(a[i]>1000000000)
            break;
        i++;
       }
       cin>>k;
       if(k<=2)
            cout<<"I'm too stupid to solve this problem"<<endl;
       else if(k==3)
       {
           cout<<1<<" "<<1<<" "<<1<<endl;
       }
       else
       {
           for(i=0; ;i++)
           {
               if(a[i]==k)
               {
                   s=i;
                   break;
               }
           }
           cout<<a[s-4]<<" "<<a[s-3]<<" "<<a[s-1]<<endl;
       }
    return 0;
}

    #include <iostream>
    using namespace std;

    const long long int SIZE = (long long int) 50 ;
    long long int hello[SIZE];

        void Init(){
        hello[0] = 0 ;
        hello[1] = 1 ;
        for(long long int i = 2 ; i<SIZE ;i++)
                hello[i] = hello[i-1] + hello[i-2];
        }
        long long int findIndex(long long int input){
            for(int i = 0 ; i < SIZE;i++)
                if (hello[i] == input)
                    return i ;
        }
    int main()
    {
        Init();
        long long int input ;
        cin>>input ;
        if(input == 3){
            cout<<1<<" "<<1<<" "<<1 ;
            return 0;
        }
        if(input == 0 ){
            cout<<0<<" "<<0<<" "<<0 ;
            return 0;
        }

        int index = findIndex(input);
        cout<<hello[index-1] <<" "<<hello[index-3]<<" "<<hello[index-4];
        return 0 ;
    }

#include <vector>
#include <list>
#include <map>
#include <set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <map>
#include <fstream>
#include <unordered_map>
#include <cstring>
#include <queue>
#define endl "\n"

using namespace std;

int main (void)
{

  int n;
  cin>>n;
  cout<<0<<0<<n<<endl;
  return 0;

}

#include <iostream>
#include <algorithm>
#include <vector>
#include <set>

using namespace std;

int main()
{
	int n;

	cin >> n;

	vector<int> fib;

	if(n < 3)
	{
		cout << "I'm too stupid to solve this problem" << endl;
	}
	else
	{
		fib.push_back(0);
		fib.push_back(1);

		for(int i = 2 ; i < n ; i++)
		{
			if(fib[i-1]+fib[i-2] >= n)
			{
				break;
			}
			fib.push_back(fib[i-1]+fib[i-2]);
		}

		for(int i = 1 ; i < fib.size(); i++)
		{
			for(int j = 1 ; j < fib.size(); j++)
				{
					for(int k = 1 ; k < fib.size(); k++)
					{
						if(fib[i]+fib[j]+fib[k] == n)
						{
							cout << fib[i] << " " << fib[j] << " " << fib[k] << endl;
							return 0;
						}
					}
				}
		}

		cout << "I'm too stupid to solve this problem" << endl;

	}

    return 0;
}

#include <iostream>
#include <math.h>
#include <bitset>
#include <vector>
#include <queue>
using namespace std;

int main()
{
	long long int n;
	cin >> n;
	vector<long long int> vec;
	vec.push_back(0);
	vec.push_back(1);
	vec.push_back(1);
	long long int pos;
	for (int i = 3; i <= n * 2; i++)
	{
		long long int a;

		a = vec[i - 1] + vec[i - 2];

		if (a > n)
			break;
		else if (a < n)
		{
			vec.push_back(a);
		}
		else
		{
			vec.push_back(a);
			pos = i + 1;
			break;
		}
	}

	if (pos >= 5)
		cout << vec[pos - 2] << " " << vec[pos - 4] << " " << vec[pos - 5] << endl;
	else if (pos = 4)
		cout << "0 1 1" << endl;
	else if (n+1 == 2 || n + 1 == 3)
		cout << "1 1 1" << endl;
	else if (n + 1 == 1)
		cout << "0 0 0" << endl;
	else
		cout << "I'm too stupid to solve this problem" << endl;
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
int  main()
{
	long int n,sum=0,c=0;
	cin>>n;
	if(n==0)
	cout<<"0 0 0";
	else if(n==1)
	cout<<"0 0 1";
	else
	{
	long int i,a[1000000];
	a[0]=0;
	a[1]=1;
	for(i=2;sum<=n;i++)
	{
		sum=a[i-1]+a[i-2];
		a[i]=sum;
		if(a[i]==n)
		{
			cout<<a[i-3]<<" "<<a[i-2]<<" "<<a[i-2];
			c=1;
			break;
		}
		else
		break;

	}
	if(c==0)
	cout<<"I'm too stupid to solve this problem";
	}
}

#include<iostream>
using namespace std ;
int main (){
	long long int arr[1000000];
	int j=2 ;
    int t1 = 0, t2 = 1, nextTerm = 0, n;

    cout << "Enter a positive number: ";
    cin >> n;
    if(n==0){
    	arr[0]=0;
	}
	else if(n==1){
		arr[1]=1;
		arr[0]=0;
		arr[2]=1;
	}
	else
	{
	 nextTerm = t1 + t2;

    while(nextTerm <= n)
    {

			arr[1]=1;
		arr[0]=0;
		arr[j]=nextTerm;
        //cout << nextTerm << ", ";
        t1 = t2;
        t2 = nextTerm;
        nextTerm = t1 + t2;
        j++;
    }
    /*for(int i = 0 ;i<j;i++){
    	cout<<arr[i]<<endl;
	                    }
	}
	*/
	int p=0;
	int q=0;
	int r=0;
	int j=0 ;
	for(p ;p>-1;p++){
	    for(q;q>-1;q++){
	        for(r;r>-1;r++){
	            if (arr[p]+arr[q]+arr[r]==n){
	        cout<<arr[p]<<endl<<arr[q]<<endl<<arr[r]<<endl;
	        j=1;
	        break;
	        }
	         if (p>=n && q>=n &&r>=n  ){
	        break;
	        cout<<"I'm too stupid to solve this problem";
	    }
	    }
	    /*if (arr[p]+arr[q]+arr[r]==n){
	        cout<<arr[p]<<endl<<arr[q]<<endl<<arr[r]<<endl;
	        break;
	    }*/
	 if(j==1){
	 	break;
	 }

	}
	if(j==1){
	 	break;
	 }

}
}
}

# include <iostream>
using namespace std;

int main(){
	int i,j,k,n,x=1,y=1,z=1,c=0;
	cin>>n;
	for(i=0;i<n;){
		for(j=0;j<n;){
			for(k=0;k<n;){
				cout<<i<<","<<j<<","<<k<<endl;
				if(i+j+k==n){
					cout<<i<<" "<<j<<" "<<k;
					c=1;
					break;
				}
				if(c==1)
				break;
				k=k+z;
				z=k-z;
			}
			if(c==1)
			break;
			j=j+y;
			y=j-y;
			z=1;
		}
		if(c==1)
		break;
		if(i==n-1){
			cout<<"I'm too stupid to solve this problem";
		}
		i=i+x;
		x=i-x;
		y=1;
	}

}

#include"stdio.h"
int main()
{
	int n,a,b,c;
    while(scanf("%d",&n)!=EOF)
	{
		a=0;
		b=1;
		c=n-a-b;
	printf("%d %d %d ",a,b,c);
	}
	return 0;
}

#include<iostream>
#include<algorithm>
#include<cmath>
#include<vector>
using namespace std;
struct t{
	int v, i;
};
void main(){

	int n;
	long long sum = -1;
	cin >> n;
	vector<int>v;
	v.push_back(0);
	v.push_back(1);
	int i = 0, j = 1;
	while (sum != n){
		sum = v.at(i++) + v.at(j++);
		v.push_back(sum);
		if (sum > n){
			cout << "I'm too stupid to solve this problem";
			return;
		}
	}

	cout << 0 <<" "<< v.at(i)<<" " << v.at(i - 1);
}

#include<iostream>
#include<cstdio>
#include<stdio.h>
#include<stdlib.h>
#include<cstdlib>
#include<math.h>
#include<algorithm>
#include<string>
#include<string.h>
#include<cstring>
#include<map>
#include<vector>
#include<queue>

using namespace std;

long long fib[100];

int main(){

    fib[0] = 0;
    fib[1] = 1;
    int x = 1;
    while(fib[x]<1000000000){
        fib[x+1] = fib[x]+fib[x-1];
        x++;
    }
    long long entrada, a, b, c;
    while(scanf("%lld", &entrada) ==1){
    bool pode = false;
        if(entrada != 0){
            for(int i = 1;i<45 && fib[i] < entrada;i++){
                for(int j = 1;j<45 && fib[j] < entrada;j++){
                    for(int k = 1;k<45 && fib[k] < entrada;k++){
                        if(fib[i]+fib[j]+fib[k] == entrada){
                            pode = true;
                            a = fib[i];
                            b = fib[j];
                            c = fib[k];
                            i = 50;
                            j = 50;
                            k = 50;
                        }
                    }
                }
            }
            if(pode)
            printf("%lld %lld %lld\n", a, b, c);
            else{
                printf("I'm too stupid to solve this problem\n");
            }
        }else{
            printf("0 0 0\n");
        }
    }

    return 0;
}

// Author : Manish Bainsla
#include <bits/stdc++.h>
using namespace std;

#define int unsigned long long int
#define db1(x) cout<<#x<<"="<<x<<'\n'
#define db2(x,y) cout<<#x<<"="<<x<<","<<#y<<"="<<y<<'\n'
#define db3(x,y,z) cout<<#x<<"="<<x<<","<<#y<<"="<<y<<","<<#z<<"="<<z<<'\n'
#define rep(i,n) for(int i=0;i<(n);++i)
#define repa(i,a,n) for(int i=a;i<=(n);++i)
#define repd(i,a,n) for(int i=a;i>=(n);--i)
#define FastIO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

int *dp = new int[32];

void findFibo() {
	dp[0] = 0;
	dp[1] = 1;

	for (int i = 2; i < 32; i++) {
		dp[i] = dp[i - 1] + dp[i - 2];
	}
}

int32_t main() {
	FastIO;

	int n;
	cin >> n;

	for (int i = 0; i < 32; i++) {
		dp[i] = -1;
	}

	findFibo();

	bool is_in = false;
	int i;
	for (i = 0; i < 32; i++) {
		if (dp[i] == n) {
			is_in = true;
			break;
		}
	}

	if (is_in) {
		if (n % 3 == 0) {
			cout << n / 3 << " " << n / 3 << " " << n / 3;
		}
		else {
			if (i >= 4) {
				cout << dp[i - 1] << " " << dp[i - 3] << " " << dp[i - 4];
			}
			else {
				if (n == 0) {
					cout << "0 0 0";
				}
				else if (n == 1) {
					cout << "0 0 1";
				}
				else if (n == 2) {
					cout << "0 1 1";
				}
				else {
					cout << "0 1 2";
				}
			}
		}
	}
	else {
		cout << "I'm too stupid to solve this problem";
	}

	return 0;
}

# include <iostream>
# include <conio.h>
using namespace std;

int f (int n)
{
	if (n==0)
		return 0;

	else if (n==1)
		return 1;

	else
		return f(n-2)+f(n-1);
}

int main ()
{

	long long int n,i;

	cin >> n;

	if (n<3)
		cout << "I'm too stupid to solve this problem";

	else
		for(i=4;;i++)
			if (n==f(i))
			{
				cout << f(i-4) << " "<< f(i-3) << " " << f(i-1);
				return 0;
			}
}

#include <bits/stdc++.h>
using namespace std;

int main() {
  int n;
  cin >> n;

  vector<int> F(10000, 0);
  F[1] = 1;

  int cur = 0;
  int i = 2;
  while(cur != n) {
	cur = F[i-1] + F[i-2];
	F[i] = cur;

	i++;
  }

  cout << F[i-1] << endl;

  if (n < 2) {
	cout << "I'm too stupid to solve this problem" << endl;
  } else {
	cout << F[i-2] << " " << F[i-4] << " " << F[i-5] << endl;
  }

  return 0;
}

#include<stdio.h>
main()
{ int a=1,b=1,c=2,n;
n=a+b+c;
printf("a=%d,b=%d,c=%d,n=%d\n",a,b,c,n);
}

#include <iostream>
#include <string>
#include <vector>
#include <math.h>
#include <map>
#include <algorithm>
using namespace std;

int n , a,b,c,z;
vector<int> k;

int main() {
	cin >> n;
	k.push_back(0);
	k.push_back(1);
	if(n==1||n==0){
		cout << "I'm too stupid to solve this problem" ;

	}else if(n==2){
		cout << 1 << " " << 1 << " " << 0;
	}else if(n==3){
		cout << "1 1 1";
	}else{
	for(int i = 2 ; i <=n ; i++){
		k.push_back(k.at(i-1)+k.at(i-2));
		if(k.at(i)>=n){
			z=i;

			break;
		}
	}
	if(z>4){
		a=k.at(z-1);
		b=k.at(z-3);
		c=k.at(z-4);
	}else{
		a=k.at(z-1);
		b=k.at(z-2);
		c=k.at(0);
	}
	cout << a << " " << b << " " << c;
	}

	return 0;
}

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int n, d=0, a=0, b=1, c=1;
    cin>>n;

    if(n==0)
    {
        cout<<"0 0 0";
        return 0;
    }

    if(n==1)
    {
        cout<<"0 0 1";
        return 0;
    }

    while(b<n)
    {
        if(b+c==n)
        {
            cout<<d<<" "<<a<<" "<<c;
            return 0;
        }
        d=a;
        a=b;
        b=c;
        c=a+b;
    }
    cout<<"I'm too stupid to solve this problem";
    return 0;
}

#include <bits/stdc++.h>

#define sz(s) (ll)(s.size())
#define all(x) (x.begin(), x.end())
#define pb push_back
#define pf push_front
#define F first
#define S second
#define nl endl
#define ort1 exit(0);

using namespace std;

typedef unsigned long long ull;
typedef long long ll;
typedef long double ld;

const double pi = acos(-1.0);
const double eps = 1e-9;
const int mod = 1e9 + 7;
const ll INF = 1e12 + 1;
const int N = 5e5;

int f(int n){
	if(n == 0) return 0;
	else if(n == 1 || n == 2 || n == 3) return 1;
	else return f(n - 4);
}

int f2(int m){
	if(m == 0 || m == 1) return 0;
	else if(m == 2 || m == 3) return 1;
	else return f2(m - 3);
}

int f3(int g){
	if(g == 0 || g == 1 || g == 2) return 0;
	else if(g == 3) return 1;
	else return f3(g - 1);
}

int n;

int main(){
//freopen("in.txt", "r", stdin);

	cin >> n;

	cout << f(n) << " " << f2(n) << " " << f3(n) << nl;

	ort1
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,i;
long long int fib[10000];fib[0]=0;fib[1]=1;
for(i=2;i<10000;i++)
fib[i]=fib[i-1]+fib[i-2];
cin>>n;
if(n==1)
{
cout<<"0 1 1";
return 0;
}
if(n==0)
{
cout<<"0 0 0";
return 0;
}
for(i=0;i<n;i++)
if(fib[i]==n)
{
cout<<fib[i-1]<<" "<<fib[i-3]<<" "<<fib[i-4];
}
return 0;
}

#include "stdio.h"
static int a[30],i,j,n;
int main()
{
	a[0]=0; a[1]=1;
	for(i=2;i<30;i++)
		a[i]=a[i-1]+a[i-2];
	scanf("%d",&n);
	for(i=0;i<30;i++)
		if(n==a[i]) printf("%d %d %d",a[i-1],a[i-3],a[i-4]);
		else printf("I'm too stupid to solve this problem\n");
}

#include <iostream>
#include <vector>
using namespace std;

int main()
{
    int n = 0;
    cin >> n;

    if (n == 3)
    {
        cout << 1 << " " << 1 << " " << 1 << endl;
        return 0;
    }

    vector<int> v{0, 1};

    int f0 = 0, f1 = 1, temp = 0;

    while (f1 < n)
    {
        temp = f1;
        f1 = f0 + f1;
        f0 = temp;
        v.push_back(f1);
    }
    cout << "size: " << v.size() << endl;

    for (int i = 0; i < v.size(); i++)
        cout << v[i] << " ";
    cout << endl;

    cout << v[v.size() - 5] << " " << v[v.size() - 4] << " " << v[v.size() - 2] << endl;
    return 0;
}

#include <iostream>

using namespace std;
int main()
{
    int numero;
    scanf("%d", &numero);
    int num= 0;
    int num1 = 1;
    int num2 = 1;
    int num3 = 2;
    int num4 = 3;
    int count = 0;
    if(numero == 2)
    {
        cout<<"0"<<"1"<<"1"<<endl;
    }
    else if(numero == 1)
    {
        cout<<"0"<<"0"<<"1"<<endl;
    }
    else if(numero == 0)
    {
        printf("I'm too stupid to solve this problem");
    }
    else{
    while (num4 != numero)
    {
     num4 =num4+num3;
     num3 = num4-num3;
     num2 = num3-num2;
     num1 = num2-num1;
     num = num1-num;
    }
    printf("%d \n", num4);
    cout<< num<< " "<<num1<<" "<<num3<<endl;
    }

    return 0;
}

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>

using namespace std;

bool fin=0;
int ar[1005],cnt=1,a,b,c;

void rek(int x,int depth)
{
   if(fin) return;
   if(depth==4 && x==0)
   {
      printf("%d %d %d\n",a,b,c);
      fin=1;
      return;
   }
   else if(depth==4) return;

   for(int i=1;i<=cnt;i++)
   {
      if(ar[i]<=x)
      {
         if(depth==1) a=ar[i];
         else if(depth==2) b=ar[i];
         else if(depth==3) c=ar[i];
         rek(x-ar[i],depth+1);
      }
      else return;
   }
}

int main()
{
 int n;
 scanf("%d",&n);

 int a=1,b=1;
 ar[1]=0;
 while(a+b<=n)
 {
    cnt++;
    ar[cnt]=b;
    int tmp=a;
    a=b;
    b=tmp+a;
 }

 rek(n,1);
 if(!fin) printf("I'm too stupid to solve this problem\n");

// system("pause");
 return 0;
}

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <map>
#include <algorithm>
#include <cstring>
#include <string>
#include <list>

using namespace std;

typedef long long int LL;
typedef pair<int,int> pii;

#define F first
#define S second
#define pb push_back
#define mp make_pair

int main (void)
{
	LL n;
	cin >> n;
	LL f[100000];

	f[0] = 0;
	f[1] = 1;

	if(n == 0 || n == 1) printf("0 0 0\n");
 	else if(n == 2) {
		cout << "1 1 0\n";
	} else {
		int i ;
		for(i = 2; i < 1000000 ; i++) {
			f[i] = f[i-1] + f[i-2];
			if(f[i] == n) break;
		}
		cout << f[i-1] << " " << f[i-3] << " " << f[i-4] << endl;
	}
	return 0;
}

#include <iostream>

using namespace std;

int main()
{
    int n,a,b,c,len;
    cin>>n;
    int fib[n+1];
    for( int i=0,a=0,b=1,c=0;a<=n;i++){
        fib[i]=a;
        c=a+b;
        a=b;
        b=c;
        len=i;

    }
    for(int i=1;i<len;++i){
        for(int j=1;j<len;++j){
            for(int k=1;k<len;++k){
                   if(n==fib[i]+fib[j]+fib[k]){
                    cout<<fib[i]<<" "<<fib[j]<<" "<<fib[k];
                    return 0;
                   }

        }
    }

     }
     cout<< "I'm too stupid to solve this problem";
     return 0;

}

#include<bits/stdc++.h>
using namespace std;
int  main()
{
	long int n,sum=0,c=0;
	cin>>n;
	if(n==0)
	cout<<"0 0 0";
	else if(n==1)
	cout<<"0 0 1";
	else
	{
	long int i,a[1000000];
	a[0]=0;
	a[1]=1;
	for(i=2;sum<=n;i++)
	{
		sum=a[i-1]+a[i-2];
		a[i]=sum;
		if(a[i]==n)
		{
			cout<<a[i-3]<<" "<<a[i-2]<<" "<<a[i-2];
			c=1;
			break;
		}
		else
		break;

	}
	if(c==0)
	cout<<"I'm too stupid to solve this problem";
	}
}

// Bismillahir Rahmanir Rahim
#include<bits/stdc++.h>
#include<iomanip>
typedef long long ll;
typedef unsigned long long ul;
#define pi acos(-1)
#define ll long long
#define ull unsigned long long
#define vec vector<ll>
#define f1(i,n) for(i=1;i<n;i++)
long long int i,j;
using namespace std;

int main()
{
    //freopen("a.txt","r",stdin);
  ll n;cin>>n;
  for(i=0;i<n;i++)
    cout<<"1 ";

}

#include<bits/stdc++.h>
using namespace std;
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define ll long long
#define pb push_back
long mod=pow(10,9)+7;
int countdivisors(int n)
{
      int count =0;
      for(int i=1;i<=sqrt(n);i++)
      {
            if(n%i==0)
            {
                  if(n/i==i)
                  {
                        count++;
                  }else
                  {
                        count=count+2;
                  }
            }
      }
      return count;
}
//to remove dublicate elements from a vector
void remove(std::vector<int> &v)
{
	auto end = v.end();
	for (auto it = v.begin(); it != end; ++it) {
		end = std::remove(it + 1, end, *it);
	}

	v.erase(end, v.end());
}
//to check if a no is perfect square or not
bool isPerfectSquare(int x)
{
    int s = sqrt(x);
    return (s*s == x);
}

// Returns true if n is a Fibonacci Number, else false
bool isFibonacci(int n)
{
    return isPerfectSquare(5*n*n + 4) ||
           isPerfectSquare(5*n*n - 4);
}
int main()
{
      fast
      int n;
      cin>>n;
      vector<int>v;
      for(int i=1;i<n;i++)
      {
            if(isFibonacci(i)==true)
            {
                  v.pb(i);
            }

      } int count=0;
      for(int i=0;i<v.size();i++)
      {
            for(int j=0;j<v.size();j++)
            {
                  for(int k=0;k<v.size();k++)
                  {
                        if(v[i]+v[j]+v[k]==n)
                        {
                              cout<<v[i]<<" "<<v[j]<<" "<<v[k];
                              count++;
                              break;
                        }
                  }
                  if(count!=0)
                  {
                        break;
                  }
            }
            if(count!=0)
            {
                  break;
            }
      }
      if(count==0)
      {
            cout<<"I'm too stupid to solve this problem";
      }
      return 0;
}

#include <cstdio>

int main(){
    long input; scanf("%ld", &input);
    long first(0), second(0), third(1), temp(0), newFib(0);
    while(newFib < input){first = second; second = third; temp = newFib; newFib += third; third = temp;}
    printf("%ld %ld %ld\n", first, second, second);
    return 0;
}

/*
   __Allahu Akbar__
   __All_praises_to_Allah__
   __Bismillahir_Rahmanir_Rahim__

   Author: Abdullah Al Nayem
   Studying B.Sc in CSE at Leading University.

   Practice, like you've never won. Perform, like you've never lost.
   Practice hard, play hard. Be hard to beat.

*/

#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <math.h>
using namespace std;

#define ll                long long
#define pb                push_back
#define pob               pop_back
#define mkp               make_pair
#define F                 first
#define S                 second
#define Sort_arr(arr,x)   sort(arr,arr+x)
#define Sortr_arr(arr,x)  sort(arr, arr+n,greater<int>())
#define SortS(str)        sort(str.begin(), str.end())
#define SortRS(str)       sort(str.rbegin(), str.rend())
#define arr_rev(n)        sort(n.begin(), n.end(), greater<int>())
#define gin(a)            getline(cin,a)
#define Sz(a)             a.size()
#define Ignore            cin.ignore()
#define square(n)         (n*n)
#define cube(n)           (n*n*n)
#define co                cout<<
#define sp                 <<" "<<
#define el                <<endl
#define min3(a, b, c)     min(a, min(b, c))
#define max3(a, b, c)     max(a, max(b, c))
#define YES               cout << "YES" << endl
#define NO                cout << "NO" << endl
#define pYES              printf("YES\n")
#define pNO               printf("NO\n")

#define SIZE_N 1000001
//#define SIZE_P 1000000000
ll int fib[SIZE_N];
//bool flag[SIZE_N+5];
//ll int primes[SIZE_P+5];

//ll int seive(){ll int i,j,total=0,val;for(i=2;i<=SIZE_N;i++) flag[i]=1;val=sqrt(SIZE_N)+1;for(i=2;i<val;i++)if(flag[i])for(j=i;j*i<=SIZE_N;j++)flag[i*j]=0;for(i=2;i<=SIZE_N;i++)if(flag[i])primes[total++]=i;return total;}
//ll int divisor(ll int N){ll int count=0,i;for (i=1;i<=sqrt(N);i++){if (N%i==0){count++;if (N/i!=i) count++;}}return count;}
//ll int GCD (ll int x, ll int y){if (x%y==0) return y; else return (GCD(y,x%y));}
//bool is_prime(ll int n){for (ll int i=2;i<=sqrt(n);i++){if (n%i==0) return false;}return true;}
void fibonacchi()
{
    fib[0]=0;
    fib[1]=1;
    for (int i=2;i<1000001;i++)
    {
        fib[i]=fib[i-1]+fib[i-2];
    }
}

int main()
{
    ll int n;
    cin>>n;

    fibonacchi();
    if (n==0)
    {
        cout<<"I'm too stupid to solve this problem"<<endl;
        return 0;
    }

    for (int i=0;i<1000001;i++)
    {
        if (fib[i]==n)
        {
            cout<<fib[i-4]<<" "<<fib[i-3]<<" "<<fib[i-1]<<endl;
        }
    }

    return 0;
}

#include <bits/stdc++.h>

using namespace std;

int main() {
  int n;
  cin >> n;

  if(n == 0) cout << "0 0 0" << endl;
  else if(n == 1) cout << "0 0 1" << endl;
  else if(n == 2) cout << "0 1 1" << endl;
  else if(n == 3) cout << "1 1 1" << endl;
  else {
  long long base = 1;
  long long m1 = 1;
  long long m2 = 0;
  int i = 2;
  while(base < n) {
    cout << base << " ";
    base = m1 + m2;
    m2 = m1;
    m1 = base;
    i++;
  }
  cout << endl;
  cout << m2 << " " << m2-(m1-m2) << " " << (m1-m2)-(m2-(m1-m2)) << endl;
}
  return 0;
}

    #include<bits/stdc++.h>
    using namespace std;
    int main()
    {
        long long n;
        cin>>n;
        long long f[n+2];
         // 1 extra to handle case, n = 0
      long long i;

      /* 0th and 1st number of the series are 0 and 1*/
      f[0] = 0;
      f[1] = 1;

      for (i = 2; i <= n; i++)
      {
          f[i] = f[i-1] + f[i-2];
      }
      sort(f,f+n);
     int l, r;
    for ( i = 0; i < n - 2; i++) {
            l = i + 1;
      r = n - 1;
            while (l < r) {
                if (f[i] + f[l] + f[r] == n) {
                    cout<< f[i]<<" "<<f[l]<<" "<< f[r];
                   return 0;
                }
                else if (f[i] + f[l] + f[r] < n)
                    l++;
                else
                    r--;
            }
            cout<<"I'm too stupid to solve this problem";
        }
    }

#include <iostream>
#include <cstdio>
#include <cstring>
#include <map>
#include <cstdlib>
#include <vector>
#include <queue>

using namespace std;

#define sqr(x) ((x)*(x))
int i, n, d[1000001];

int main () {
    freopen ("a.in", "r", stdin);
    freopen ("a.out", "w", stdout);
    cin >> n;
    d[1] = 1;
    d[2] = 1;
    for (i = 3; i <= n; i++) {
        d[i] = d[i - 2] + d[i - 1];
    if (d[i] >= n)
       break;
  }
    if (i > 4)
    cout << d[i - 4] << " " << d[i - 3] <<" " << d[i - 1];
    else
    if (n == 4)
        cout << 1 << " " << 1 << " " << 2;
    else
    if (n == 3)
        cout << 1 << " " <<  1 << " " << 1;
else    if (n == 2)
        cout << 0 << " " <<  1 << " " << 1;
else    if (n == 1)
        cout << 0 << " " <<  0 << " " << 1;

    return 0;
}

/**-------------------------
|--------From A.R.A--------|
-------------------------**/

#include <bits/stdc++.h>

#define ll            long long int
#define pb            push_back
#define ull           unsigned long long int
#define endl          "\n"
#define sz(c)         (c).size()
#define sall(c)       sort((c).begin(),(c).end())
#define rsall(c)      sort((c).rbegin(),(c).rend())
#define rev(c)        reverse((c).begin(),(c).end())
#define FOR(i,n)      for(ll i=0;i<n;i++)
#define max3(a,b,c)   max(max(a,b),c)
#define min3(a,b,c)   min(min(a,b),c)
#define input(a,i,n)  for(ll i=0;i<n;i++){      cin>>a[i];}
#define output(a,i,n) for(ll i=0;i<n;i++){cout<<a[i]<<" ";}

using namespace std;
int64_t R=1;
void solution(){
    int64_t n,m;
    cin>>n;m=n;
    if(n==0){cout<<"0 0 0"<<endl;}
    vector <int64_t> v;
    v.push_back(0);
    v.push_back(1);
    while(m--){
        int64_t q=v[v.size()-1]+v[v.size()-2];
        v.push_back(q);
    }
    for(int i=0;i<v.size()-2;i++){
        if(v[i]+v[i+1]==n){cout<<v[i]<<" "<<v[i+1]<<" "<<0<<endl; return;}
        if(v[i]+v[i+1]+v[i+2]==n){cout<<v[i]<<" "<<v[i+1]<<" "<<v[i+2]<<endl; return;}
    }
    cout<<"I'm too stupid to solve this problem"<<endl;
}
int main()
{
    FOR(i,R){solution();}
    return 0;
}

// Author : Manish Bainsla
#include <bits/stdc++.h>
using namespace std;

#define int unsigned long long int
#define db1(x) cout<<#x<<"="<<x<<'\n'
#define db2(x,y) cout<<#x<<"="<<x<<","<<#y<<"="<<y<<'\n'
#define db3(x,y,z) cout<<#x<<"="<<x<<","<<#y<<"="<<y<<","<<#z<<"="<<z<<'\n'
#define rep(i,n) for(int i=0;i<(n);++i)
#define repa(i,a,n) for(int i=a;i<=(n);++i)
#define repd(i,a,n) for(int i=a;i>=(n);--i)
#define FastIO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

int *dp = new int[33];

void findFibo() {
	dp[0] = 0;
	dp[1] = 1;

	for (int i = 2; i < 33; i++) {
		dp[i] = dp[i - 1] + dp[i - 2];
	}
}

int32_t main() {
	FastIO;

	int n;
	cin >> n;

	findFibo();

	bool is_in = false;
	int i;
	for (i = 0; i < 33; i++) {
		if (dp[i] == n) {
			is_in = true;
			break;
		}
		else if (dp[i] > n) {
			break;
		}
	}

	if (dp[i] > n) {
		if (dp[i - 1] + dp[i - 3] + dp[i - 4] == n) {
			cout << dp[i - 1] << " " << dp[i - 3] << " " << dp[i - 4];
			return 0;
		}
	}

	if (is_in) {
		if (i >= 4) {
			cout << dp[i - 1] << " " << dp[i - 3] << " " << dp[i - 4];
		}
		else {
			if (n == 0) {
				cout << "0 0 0";
			}
			else if (n == 1) {
				cout << "0 0 1";
			}
			else if (n == 2) {
				cout << "0 1 1";
			}
			else {
				cout << "0 1 2";
			}
		}
	}
	else {
		cout << "I'm too stupid to solve this problem";
	}

	return 0;
}

#include <bits/stdc++.h>

using namespace std;

int main()
{

long long int n;
cin >> n ;

cout << n-3 << " " << 1 << " " << 2;
}

#include<iostream>
#include<string>
#include <algorithm>
#include <assert.h>

using namespace std;

int main(){
    long long array[51] , x ;
    array[0]=0;
    array[1]=1;
    for(int i = 2 ; i<=50 ; i++)
    {
        array[i]=array[i-1]+array[i-2] ;
        cout<<array[i]<<endl;
    }
    cin>>x;
    for(int i = 0 ; i<51 ; i++){
        if(x==0)cout<<array[i]<<" "<<array[i]<<" "<<array[i]<<endl;
        if(x==1)cout<<array[i-1]<<" "<<array[i-1]<<" "<<array[i]<<endl;
        if(x==2)cout<<array[i-1]<<" "<<array[i-1]<<" "<<array[i-2]<<endl;
        if(array[i]==x){
            cout<<array[i-1]<<" "<<array[i-3]<<" "<<array[i-4]<<endl;
            break;
        }

    }
    return 0 ;
}

#include <iostream>

using namespace std;

int main()
{
   int t;
   cin>>t;
   int dp[t+1];
   dp[0]=0,dp[1]=1,dp[2]=1;
   for(int i=3;i<=t;i++)
    dp[i]=dp[i-1]+dp[i-2];
  if(dp[t-1]+dp[t-2]>t)
    cout<<"I'm too stupid to solve this problem\n";
  else
    {if(t<0)

      cout<<0;
    else
   cout<<dp[t]<<" ";
   if(t-2<0)
    cout<<0<<" ";
    else
   cout<<dp[t-2]<<" ";
   if(t-3<0)
    cout<<0<<" ";
   else
      cout<<dp[t-3]<<'\n';
    }
    return 0;
}

#include<bits/stdc++.h>
using namespace std;

int main() {

    int n;
    cin >> n;

    if (floor(sqrt(5 * n * n + 4)) == sqrt(5 * n * n + 4) || floor(sqrt(5 * n * n - 4)) == sqrt(5 * n * n - 4))
        cout << n << " 0 0\n";

    else
        cout << "I\'m too stupid to solve this problem\n";

    return 0;
}

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
	int n, f = 0, s = 1,t=0,a=0;
	bool is_true = false;
	cin >> n;

		for (int i = 1; t <=n; i++)
		{
			t = f + s;
			if (t == n)
			{
				cout << a << " " << f << " " << s << endl;
				is_true = true;
				break;
			}
			f = s;
			s = t;
		}
		if (n == 0){
			cout << a << " " << f << " " << s - 1 << endl;
		}
		if (is_true != true){
			cout << "I'm too stupid to solve this problem\n";
		}
}

#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<vector>
#include<iostream>
#include<algorithm>

#define sqr(a) ((a)*(a))
#define eps 1e-9
#define INF 2147483647
#define N 1000*1000*1000
#define cub(a) ((a)*(a)*(a))

using namespace std;
long long f[N/1000];
int i , j , n , k;
int main()

{
    #ifndef ONLINE_JUDGE
        freopen(".in","r",stdin);
        freopen(".out","w",stdout);
    #endif
    cin >> n;
    f[0] = 0; f[1] = 1;
    for (i = 2; i <= 3000; i++)
        f[i] =  f[i-1]+f[i-2];

    for (i = 1 ;i <= 500 ;i++)

        for (j = i;j  <= 1000; j++)

            for (k = j; k <= 1000; k++)

            if (f[i] + f[j] + f[k] == n)
            {
                cout << f[i] << " " << f[j] << " " << f[k];
                exit(0);
            }
    cout << "I'm too stupid to solve this problem";
    return 0;
}

#include<bits/stdc++.h>

using namespace std;
int main()
{
    int n,i;
    cin >> n;

    cout <<  0 << 1 << n-1 << endl;

    return 0;
}

#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
#include <cmath>
#include <numeric>
#include <functional>
#include <vector>
#include <set>
#include <map>
#include <iterator>
#include <algorithm>
using namespace std;
typedef long long ll;
int main()
{
    ostream_iterator <int> output(cout," ");
    int n,a=0,b=1,temp;
    cin>>n;
    vector<int>arr;
    while(a<=n)
    {
        arr.push_back(a);
        temp=a+b;
        a=b;
        b=temp;
    }
    int i1,i2,i3;
    for(i1=1;arr[i1]<=n/3;i1++)
        for(i2=i1;arr[i2]<=n/2;i2++)
            for(i3=i2;arr[i3]<n;i3++)
                if(arr[i1]+arr[i2]+arr[i3]==n)
                {
                    cout<<arr[i1]<<" "<<arr[i2]<<" "<<arr[i3]<<endl;
                    return 0;
                }
    cout<<"I'm too stupid to solve this problem"<<endl;
    return 0;
}

# include<stdio.h>
main()
{    int n,a,b,c,i;long f1,f2,f3;
     f1=0;f2=1;
	 for(i=3;i<1000;i++)
	 {   f3=f2+f1;
	     f1=f2;f2=f3;
		 printf("%d",f3);
	 }
	 printf("input a number of f3:\n");
		 scanf("%d",&n);
		 printf("%d%d%d",a=n,b=0,c=0);
	}

#include<bits/stdc++.h>
using namespace std;

int arr[1000000];

int main( )    {

     int n;
     cin>>n;

     arr[1]=1;
     arr[2]=1;

     for(int i=3;i<=50;i++) arr[i] = arr[i-1] + arr[i-2];

     for(int i=1;i<=50;i++)  {
            for(int j=1;j<=50;j++)   {
                for(int k=1;k<=50;k++)  {
                    if(arr[i] + arr[j] + arr[k] == n)  {
                         cout<<arr[i]<<" "<<arr[j]<<" "<<arr[k];
                         return 0;
                    }

                }
            }

     }

return 0;
}

#include <iostream>
#include <map>
#include <cstdio>
#include <cstring>

using namespace std;

int n,a[10010],flag;
int ans[4];
    map<int,int> hash;

void dfs(int now,int dep){
     if (flag) return ;
     for (int i=1;i<=45;i--)
         if (now>=a[i]){
            if (flag) return ;
            if (dep==3){
               //cout << now << endl;
               if (hash[now]==1){
                  cout << ans[1] << " " << ans[2] <<" " << now << endl;
                  //system("pause");
                  flag=1;               }
            }else{
            ans[dep]=a[i];
            dfs(now-a[i],dep+1);
            }
         }else break;
}

int main(){
    scanf("%d",&n);
    a[0]=0;a[1]=1;
    flag=0;
    for (int i=2;i<=45;i++) a[i]=a[i-1]+a[i-2];
    for (int i=1;i<=45;i++) hash[a[i]]=1;
    dfs(n,1);
    if (!flag)
    cout << "I'm too stupid to solve this problem" << endl;
    //system("pause");
    return 0;
}

#include <bits/stdc++.h>

using namespace std;

const int N = 1e4 + 15;

int n, a[N];

main()
{
	cin >> n;
	a[0] = 0;
	a[1] = 1;
	for (int i = 2; i <= n * 2; ++i)
	{
		a[i] = a[i - 1] + a[i - 2];
		if (a[i] == n)
		{
		   cout << "0 0 " << n;
		   return 0;
		}
	}
	cout << "I'm too stupid to solve this problem";
	return 0;
}

#include <cstdio>
#include <cstring>
int fib[101];
int n;
int main()
{
    fib[0] =  1;fib[1] = 1;
    for(int i = 2; i <44;i++){
        fib[i] = fib[i - 1] + fib[i - 2];
        //printf("%d:%d\n",i,fib[i]);
    }
    while(~scanf("%d",&n))
    {
        bool flag = false;
        for(int i = 0; i < 44; i++){
            if(fib[i] > n)break;
            for(int j = 0; j < 44; j++){
                if(fib[i] + fib[j] > n)break;
                for(int k = 0; k < 44; k++){
                    if(fib[i] + fib[j] + fib[k] == n){
                        printf("%d %d %d\n",fib[i],fib[j],fib[k]);
                        flag = true;
                        goto L;
                    }
                }
            }
        }
        L:
        if(!flag){
            printf("I'm too stupid to solve this problem\n");
        }
    }

}

#include<stdio.h>
int f[46]={0,1};
void init()
{
	int i=2;
	for(;i<46;++i)
		f[i]=f[i-1]+f[i-2];
}
int main()
{
	int n;
	int j;
	init();
	scanf("%d",&n);
	if(n==0||n==1)
		puts("I'm too stupid to solve this problem");
	else if(n==2)
		puts("1 1 0");
	else if(n==3)
		puts("1 1 1");
	else
	{
	for(j=0;j<1000;j++)
		if(f[j]==n)
		{
			printf("%d %d %d\n",f[j-1],f[j-3],f[j-4]);
			break;
		}
	}
	return 0;
}

#include <bits/stdc++.h>
using namespace std;
#define pb push_back
const int N = 1e5 + 5;
#define mp make_pair
#define fr(i,m, n) for (int i = (int)(m); i < (int)(n); ++i)
typedef long long LL;
typedef pair<int, int> PII;
int main()
{
    int n;cin>>n;
    if(n<3) cout<<"I'm too stupid to solve this problem";
    else if(n==3) cout<<1<<" "<<1<<" "<<1;
    {
    	int a[N],i=2;
    	a[0]=0;a[1]=1;
    	while(a[i-1]!=n)
    	{
    		a[i]=a[i-1]+a[i-2];
    		i++;
		}
		cout<<a[i-2]<<" "<<a[i-4]<<" "<<a[i-5];
		//fr(g,0,i) cout<<a[g]<<" ";
	}
	return 0;
}

#include<iostream>
#include<cmath>
#include<vector>
#include<algorithm>
#include<set>
#include<string>
using namespace std;
int main()
{
  ios_base::sync_with_stdio(false);
 const  int maxN=10000000;
  int v[maxN];
  int n;
  cin>>n;
  v[0]=0;
  v[1]=1;
  int i=2;
  for(i;i<=n;i++)
    {
      v[i]=v[i-1]+v[i-2];
    }
  int h=0;
  int f=v[i-1];
  int s=v[i-2];
  cout<<h<<""<<s<<""<<f;
  exit(0);
}

#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
#include <set>
#include <utility>
#include <queue>
#include <map>
#include <assert.h>
#include <stack>
#include <string>
#include <stdlib.h>
#include <stdio.h>
#include <cstring>
#include <cmath>
#include<iomanip>

#define int unsigned long long int
using namespace std;
#define max(a,b) (a>b?a:b)
#define min(a,b) (a<b?a:b)
int mod(int x)
{
    return (((x)%1000000007)+1000000007)%1000000007;
}

int solve()
{
    vector<int>fab(43,0);
    fab[0]=0;
    fab[1]=1;
    for(int i=2;i<43;i++)
    {
        fab[i]=fab[i-1]+fab[i-2];
    }
    vector<int>::iterator it;
    int n;
    cin>>n;

    it=find(fab.begin(),fab.end(),n);
    if(it-fab.begin()>=4)
    {
        it--;
        cout<<*(it)<<" ";
        it-=2;
        cout<<*(it)<<" ";
        it--;
        cout<<*(it)<<" ";
    }
    else if(n==0)
    {
        cout<<"0 0 0";
    }
    else if(n==1)
    {
        cout<<"1 0 0";
    }
    else if(n==2)
    {
        cout<<"1 1 0";
    }
    else
    {
        cout<<"I'm too stupid to solve this problem";
    }

}

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(NULL); cout.tie(NULL);
	int t;
	//cin >> t;
	t=1;
	while (t--)
	{
		solve();
	}
	return 0;
}

#include <cstdio>
#include <iostream>
#include <math.h>
using namespace std;
long long arr[1000005];
int main(){
   long long a,b,i,c,d,salah,j;
   arr[0]=0;
   arr[1]=1;
   for(i=2;i<51;i++){
      arr[i]=arr[i-1]+arr[i-2];
      //cout<<arr[i]<<endl;
   }
   scanf("%lld", &a);
   getchar();
   for(i=0;i<51;i++){
      if(a==arr[i])break;
   }
   cout<<arr[i-4]<<" "<<arr[i-3]<<" "<<arr[i-1]<<endl;
}

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int n, d=0, a=0, b=1, c=1;
    cin>>n;

    if(n==0)
    {
        cout<<"0 0 0";
        return 0;
    }

    if(n==1)
    {
        cout<<"0 0 1";
        return 0;
    }

    while(b<n)
    {
        if(b+c==n)
        {
            cout<<d<<" "<<a<<" "<<c;
            return 0;
        }
        d=a;
        a=b;
        b=c;
        c=a+b;
    }
    cout<<"I'm too stupid to solve this problem";
    return 0;
}

#include <bits/stdc++.h>

using namespace std;
int fib(int n)
{
   if (n <= 1)
      return n;
   return fib(n-1) + fib(n-2);
}

int main(){

    int n;
    cin>>n;
    if(n==0||n==1||n==2){
        cout<< "I'm too stupid to solve this problem";
    }
    if(n==3){
        cout<<1<<" "<<1<<" "<<1;
        return 0;
    }
    if(n==5){
        cout<<3 <<" "<<1<<" "<<1;
    }
    for(int i=0;i<n;i++){
        if(n==fib(i)){
            cout<<fib(i-4)<<" "<<fib(i-3)<<" "<<fib(i-1);
            return 0;
        }
    }

}

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector <int >f;
void fibo(){
    f.push_back(0);
    f.push_back(1);
    for (int i=2;f[i-1]+f[i-2]<=1e9;i++)
        f.push_back(f[i-1]+f[i-2]);
}
int main (){
    fibo();int n;cin>>n;bool flag=1;
    for (int i=0;f[i]<n;i++){
        for (int j=0;f[j]<n;j++){
            for (int k=0;f[k]<n;k++){
                if (f[i]+f[j]+f[k]==n){cout <<f[i]<<" "<<f[j]<<" "<<f[k]<<" ";flag=0;break;}
            }if (!flag)break;
        }if (!flag)break;
    }if (flag)cout <<"I'm too stupid to solve this problem";

}

#include<bits/stdc++.h>
#define ull unsigned long long int
using namespace std;
ull fibs[40] = {0};
ull fib(int n)
{
    if(n == 0) return 0;
    if(n == 1) return 1;
    if(fibs[n] != 0) return fibs[n];
    else fibs[n] = fib(n - 1) + fib(n - 2);
    return fibs[n];
}
int main()
{
    ull a = fib(40);
    ull n;
    cin>>n;
    for(int i = 0; i < 40; i++)
    {
        if(n == 0)
        {
            cout<<0<<' '<<0<<' '<<0<<'\n';
            return 0;
        }
        if(n == 1)
        {
            cout<<0<<' '<<0<<' '<<1<<'\n';
            return 0;
        }
        if(n == 2)
        {
            cout<<0<<' '<<1<<' '<<1<<'\n';
            return 0;
        }
        if(fibs[i] == n)
        {
            cout<<0<<' '<<fibs[i - 1]<<' '<<fibs[i - 2]<<'\n';
            return 0;
        }
    }
    cout<<"I'm too stupid to solve this problem\n";
    return 0;
}

#include <iostream>
using namespace std;
int i,n,m,a[1000],b[1000]={0},ind=1000;
bool f=true;
int com(int k){
     int sum=0;
     if(k>3){
             for(int i=1;i<=3;i++){
            //    cout<<b[a[i]]<<" ";
                sum+=b[a[i]];
                }
             //   cout<<endl;
                if (sum==m){
                            if(f==true)
                   for (int i=1;i<=3;i++)
                       cout<<b[a[i]]<<" ";
                       f=false;
                            }
                   if(f==false){
                              return 0;
                                }
                return 0;
             }
     for(int i=0;i<=ind;i++){
             a[k]=i;
             com(k+1);
             }
     }
int main(){
    cin>>m;
    b[0]=1;b[1]=1;
    for(i=2;i<100;i++)
    {b[i]=b[i-1]+b[i-2];}
    for (i=0;i<=100;i++)
        if (b[i]==m){
           ind=i;
           break;
                     }
    com(0);
    if (f==true)
       cout<<"I'm too stupid to solve this problem"<<endl;

//system("pause");
return 0;
}

#include <bits/stdc++.h>

typedef long long ll;
using namespace std;
double gamed=(sqrt(5)+1)/2;
ll Fibo(ll n)
{
    for(ll i=0;i<n;++i)
    {

    }
    return n;
}
int main()
{
    ll n,x,y,z;
    cin>>n;
    if(n==0){cout<<"0"<<" "<<"0"<<" "<<"0"; return 0;}
    x=(log10(n)+(log10(5)/2))/log10(gamed);
    y=(pow(gamed,x-1)-pow((1-gamed),x-1))/sqrt(5);
    z=n-y;
    cout<<x<<endl<<y<<endl<<z<<endl;
    cout<<"0"<<" "<<z<<" "<<y;
}

#include <iostream>
using namespace std;

int main() {
  int n;
  cout<<'0 0 '<<n;
    return 0;
}

#include <iostream>
using namespace std;
int a,b[1000000],c,x;
int main(){
cin>>a;
if(a==2)
{cout<<"I'm too stupid to solve this problem";
return 0;}
b[0]=1; b[1]=1; x=1;
if(a==3){
	cout<<"1 1 1";
	return 0;}
while(b[x]<a){
	x++;
	b[x]=b[x-1]+b[x-2];
}
cout<<b[x-1]<<' '<<b[x-3]<<' '<<b[x-4];
return 0;
}

#include <iostream>
using namespace std;
int main()
{
    long n, m = 0, a = 2, i = 3, j = 3;
    long x[100005];
    cin >> n;
    x[1] = 1;
    x[2] = 2;
    x[3] = 3;
    while (m < n)
    {
        j++;
        x[j] = i + a;
        m = i + a;
        a = i;
        i = m;
    }
    if (x[j - 1] + x[j - 4] + x[j - 3] == x[j] && j >= 4)
    {
        cout << x[j - 1] << " " <<  x[j - 3] << " " << x[j - 4];
    }
    else if (n < 5)
    {
        if (n == 3)
        {
            cout << "1 1 1";
        }else if (n == 5)
        {
            cout << "3 1 1";
        } else
        {
            cout << "I'm too stupid to solve this problem";
        }
    }
    else
    {
        cout << "I'm too stupid to solve this problem";
    }
}

#include<iostream>

using namespace std;
void fibonaci( int n, int a[])
{

     for(int i=0;i<n;i++)
     {
             if(a[i]==n)
             {
                     break;
                     }
     else if(i==0)
     { a[0]=0;
     }
     else if(i==1)
     {
     a[1]=1;
     }
     else
     {
         a[i]=a[i-2]+a[i-1];
         }
         }
         }
int main()
{
    int n1;
    cin>>n1;
    int a[n1];
    int k[n1],p[n1];
    int j,l=0,s;
    fibonaci(n1,a);
    for(int i=0;i<n1;i++)
    {
  for(int  j=0;j<n1;j++)
  {
       for(int s=0;s<n1;s++)
       {
               l=(a[i]+a[j]+a[s]);
       if(l==n1)
       {
       cout<< a[i]<<" "<< a[j]<< " " <<a[s] << endl;
    //   system("pause");
       return 0;
       }
}

}
}

}

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
    int n, d=0, a=0, b=1, c=1;
    cin>>n;

    // if(n==0)
    // {
    //     cout<<"0 0 0";
    //     return 0;
    // }

    if(n==1)
    {
        cout<<"0 0 1";
        return 0;
    }

    while(b<n)
    {
        if(b+c==n)
        {
            cout<<d<<" "<<a<<" "<<c;
            return 0;
        }
        d=a;
        a=b;
        b=c;
        c=a+b;
    }
    cout<<"I'm too stupid to solve this problem";
    return 0;
}

#include <bits/stdc++.h>
using namespace std;

#define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define endl "\n"
#define int long long
#define ONLINE_JUDGE

const int N=1e5+5;
const int mod=1e9+7;

int i,j,n,cnt,m,t,a,b,bit;

int32_t main()
{
	#ifndef ONLINE_JUDGE
       freopen("qns.txt","r",stdin);
       freopen("ans.txt","w",stdout);
    #endif
       IOS;
        cin>>n;
        cout<<0<<0<<n<<endl;

	return 0;
}

#include<bits/stdc++.h>
using namespace std;

int main() {

    int n;
    cin >> n;

    if (floor(sqrt(5 * n * n + 4)) == sqrt(5 * n * n + 4) || floor(sqrt(5 * n * n - 4)) == sqrt(5 * n * n - 4))
        cout << n << " 0 0\n";

    else
        cout << "I\'m too stupid to solve this problem\n";

    return 0;
}

#include <bits/stdc++.h>
using namespace std;
long long fib(long long n)
{
    if (n <= 1)
        return n;
    return fib(n-1) + fib(n-2);
}

int main()
{long long n,i,k=6;
    cin>>n;
    for(i=1;i<=max(n,k);i++)
    {
        if(fib(i)==n)
    {
        if(i>=3)
      { cout<<"0"<<" "<<fib(i-2)<<" "<<fib(i-1)<<endl;
        break;}
        else { cout<<"0 "<<"0 "<<fib(i)<<endl;
        break;}
    }

    }

return 0;
}

#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
int main() {
	ll n;
	cin >> n;
	if (n < 3)
	{
		cout << "I'm too stupid to solve this problem" << endl;
		return 0;
	}
	int ix=2, iix=1,iiix=1;
	int x = 1;
	while (x < n)
	{
		x = ix + iix;
		if (x == n) {
			cout << iiix<<" "<<iix << " " << iix << endl;

		}
		iiix = iix;
		iix = ix;
		ix = x;

	}
	return 0;
}

#include<bits/stdc++.h>
using namespace std;
#define pi acos(-1)
typedef long long int ll;
#define for(i,n)   for(int i=0;i<n;i++)
int fib[50];
p()
{
    fib[0]=0;
    fib[1]=1;
    fib[2]=1;
    for(i,42) fib[i+3]=fib[i+1]+fib[i+2];
    for(i,45) cout<<fib[i]<<endl;
}
int main()
{
    p();
    int n,cnt=-1;
    cin>>n;
    for(i,43) if(n==fib[i]) cnt=i;
    if(cnt>=4)
    cout<<fib[cnt-1]<<" "<<fib[cnt-3]<<" "<<fib[cnt-4]<<endl;
    else if(n!=-1){
        if(n==0) cout<<"0 0 0"<<endl;
        else if(n==1) cout<<"1 0 0"<<endl;
        else if(n==2) cout<<"1 1 0"<<endl;
        else if(n==3) cout <<"1 1 1"<<endl;
        }
    else cout<<"I'm too stupid to solve this problem"<<endl;
}

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cstdio>
#include <cctype>
#include <cmath>
#include <set>
#include <utility>
#include <sstream>

using namespace std;

#define FIB(x) (pow((1+sqrt(5))/2,(x))-pow((1-sqrt(5))/2,(x)))/sqrt(5)
#define REP(i,n) for( (i)=0 ; (i)<(n) ; (i)++ )
#define FIND
int main()
{
    int x , i , j , k ;
    bool s =false ;
    cin >> x ;
    REP(i,x){ if(s) break; REP(j,x) { if(s) break; REP(k,x) if( (FIB(i)+FIB(j)+FIB(k) )==x){ s=true; break; } } }
    if(s) cout << i << " " << j << " " << k ;
    else cout << "I'm too stupid to solve this problem" ;
    return 0;
}

#include<stdio.h>
int main()
{
	int a=0,b=1,c,x,n,t;
	scanf("%d",&n);
	for(t=1;t<=n;t++)
	{
	  scanf("%d",&x);
	  c=x-a-b;
	 printf("%d %d %d",a,b,c);
	}
	printf("\n");
	return 0;
}

#include<iostream>
#include<map>
#include<string>
#include<string.h>
#include<vector>
#include<stdio.h>
#include <cstdio>
#include <vector>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cctype>
#include <stack>
#include <queue>
#include <list>
#include <sstream>
#include <cmath>
#include <bitset>
#include <limits.h>
#include <limits>
#include <utility>
#include <set>
#include <numeric>
#include <functional>
#define R(i) freopen(i,"r",stdin)
#define W(i) freopen(i,"w",stdout)
#define R_W R("i.txt"),W("o.txt");
#define FOR(i,f,t) for(int i=f;i<t;i++)
#define r(e) for(int i=0;i<e;i++)
#define inf numeric_limits<int>::max()
#define minf numeric_limits<int>::min()
#define DFS_WHITE -1
#define DFS_BLACK 1
using namespace std;
typedef pair<int, int> ii;
typedef vector<ii> vii;
typedef vector<int> vi;
vector< vi > AdjList;
int dx[]={1,0,-1,0};
int dy[]={0,1,0,-1};
map<int,int>f,rf;
int main(){
    f[0]=0;
    f[1]=1;
    rf[0]=0;
    rf[1]=1;
    int s=2;
    int n;
    cin>>n;
    while(true){
        f[s]=f[s-1]+f[s-2];
        rf[f[s]]=s;
        s++;
        if(f[s-1]>=n) break;
    }
    if(rf.count(n)==0){
        cout<<"I'm too stupid to solve this problem"<<endl;
    }else{
        s=rf[n]+1;
    cout<<f[s-2]<<' '<<f[s-4]<<' '<<f[s-5]<<endl;
    }
    return 0;
}

#include"bits/stdc++.h"
using namespace std;

const int N = 100;
long long dp[N];
long long  cnt[N];
int n , b, k , t;

int main( void ){

    dp[0] = dp[1] =1;

    for( int i =2 ; i<N ; ++i ){
      dp[i] = dp[i-2]  +  dp[i-1];
    }

    scanf("%d",&n);

    for( int i = 0 ; i<=100 ; ++i ){
        for( int j = 0 ; j<=100 ; ++j )
          for( int k = 0 ; k<=100 ; ++k ){
              if( (dp[i] +  dp[j] +  dp[k]) ==  n ){
                  printf("%d %d %d \n" , dp[i] , dp[j] , dp[k]);
                  return 0;
              }
          }
    }

    printf("I'm too stupid to solve this problem");

}

/* COMPETITIVE PROGRAMMING C++ TEMPLATE */

#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <unordered_map>
#include <unordered_set>
#include <string>
#include <cmath>
#include <iostream>
#include <stack>
#include <queue>
#include <climits>
#include <iomanip>

#define all(x) x.begin(), x.end()
#define MOD 998244353
#define debug(x) cout << #x << " = " << x << "\n"

const long double PI = 3.141592653589793236L;

typedef long long int ll;
typedef long double ld;

using namespace std;
int fib(int n)
{

    if (n == 0)
    {
        return 0;
    }
    if (n == 1)
    {
        return 1;
    }
    return (fib(n - 1) + fib(n - 2));
}

void solve()
{
    //code here.
    int x;
    cin >> x;
    if (x == 0)
    {
        cout << "0 0 0";
        return;
    }
    if (x == 1)
    {
        cout << "1 0 0";
        return;
    }
    if (x == 2)
    {
        cout << "1 1 0";
        return;
    }
    if (x == 3)
    {
        cout << "2 1 1";
        return;
    }
    int n = 4;
    int m;
    while (true)
    {
        m = fib(n);

        if (m == x)
        {
            break;
        }
        n++;
    }
    cout << fib(n - 1) << " " << fib(n - 3) << " " << fib(n - 4);

}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    ll T = 1;
    //cin >> T; // If only one test case then you can comment this line out.

    while (T--)
    {
        solve();
    }
    return 0;
}

/** author -- Ayush Sharma  **/

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cassert>
#include<vector>
#include<set>
#include<algorithm>
#define FOR(i,a,b) for(int i=a; i< b;i++)
#define min(a,b,c) (a<b?(a<c?a:c):(b<c?b:c))
#define max(a,b) (a>b?a:b)
#define MAX 200001
#define infi 100000
#define Q 100000007
#define all(x) x.begin(),x.end()
typedef long long LL;
using namespace std;
int Fib[MAX];

int main(){
    int n;scanf("%d",&n);
    if(n==1){
        cout<<"0 0 1\n";
        return 0;
    }

    int x,y,z;
    Fib[0]=0;Fib[1]=1;
    int i;
    for(i=1;Fib[i]<=n;i++){
        Fib[i+1]=Fib[i-1]+Fib[i];
        //cout<<Fib[i]<<endl;
    }
    i--;
    x=i-3;y=i-2;z=i-2;
    printf("%d %d %d\n",Fib[x],Fib[y],Fib[z]);
    return 0;
}

//author: hitch_hiker42;
#include <bits/stdc++.h>
//#include <boost/multiprecision/cpp_int.hpp>
//using namespace boost::multiprecision;
using namespace std;

//macro definitions and symbolic constants:
#define syncboost ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr)
#define init(i,v) for(auto &i: v)
#define hike(i, v) for(const auto &i: v)
#define loop(i,x,n) for(int i=x;i<n;i++)
#define loopdown(i,x,n) for(int i=n;i>=x;i--)
#define weakloop(i,x,n) for(int i=x;i<=n;i++)
#define all(v) (v).begin(), (v).end()
#define precise cout << fixed; cout << setprecision(n)
#define endl '\n'
#define debug
//#define pipeline
const int unit = 1;

//debugging:
#ifdef debug
//#define cerr cout //redirect error messages to stdout instead of stderr;
#define trace(...) error(#__VA_ARGS__, __VA_ARGS__)
template <class Qux>
void error(const char* foo, Qux&& bar) {
	cerr << foo << " : " <<  bar << endl;
}
template <class John, class... Doe>
void error(const char* foo, John&& bar, Doe&&... args) {
	const char* comma = strchr(foo + 1, ',');
	cerr.write(foo, comma - foo) << " : " << bar <<" | ";
	error(comma+1, args...);
}
#else
#define trace(...) //define customized trace tool;
#endif

//type definitions:
typedef long long int int64;
typedef unsigned long long int uint64;
//typedef int int32;
typedef unsigned int uint32;
typedef complex<double> point;

//solution:
void hack() {
    int64 n;
    cin >> n;
    cout << 0 << ' ' << 0 << n << endl;
}

signed main() {
    //auto start = chrono::system_clock::now();
    #ifdef pipeline
        freopen("input.txt","r",stdin);
        freopen("output.txt","w",stdout);
    #endif
    syncboost;
    int t = unit;
    while(t--) {
        hack();
    }
    //cerr << chrono::duration_cast<chrono::milliseconds>(chrono::system_clock::now() - start).count() << endl;
    return 0;
} //farewell.. until we meet again;

#include <stdio.h>
#include <stdlib.h>
int calco(int n,int d)
{
    int fib1=0;
    int fib2=1;
    int fib;
    int i,x=0;
for(i=0; i<n&&d==1; i++)
    {
        fib=fib1+fib2;
        fib1=fib2;
        fib2=fib;
        if(fib==n)
        {
        return i;
        x=1;
        }
    }
    if(x==0&&d==1)
    {
    return 0;
    }
for(i=0; i<n&&d==0; i++)
    {
        fib=fib1+fib2;
        fib1=fib2;
        fib2=fib;

    }
    return fib;
}

int main()
{
    int n,x,y,z;
    scanf("%d" ,&n);
    if(n==3)
    {
    printf("1 1 1");
    return 0;
    }
    if(calco(n,1))
    {
     z=calco(n,1);
     printf("%d %d %d" ,calco(z-3,0),calco(z-2,0),calco(z,0));
     return 0;
    }
    printf("I'm too stupid to solve this problem");
    return 0;
}

#include <cstdio>
using namespace std;
int main()
{
int n;
scanf("%d",&n);

if(0==n)
printf("0 0 0\n");
else{
int a,b,c,m,n;
a=m=n=0; b=1;
c=a+b;
while(c<n)
{
n=m;
m=a;
a=b;
b=c;
c=a+b;
}
printf("%d %d %d\n",n,m,b);
}
return 0;}

#include<bits/stdc++.h>
using namespace std;

int main(){
    int n;
    cin>>n;
    if(n<3){
        cout<<"I'm too stupid to solve this problem";
        return 0;
    }
    vector<int> vec;
    vec.push_back(1);
    vec.push_back(1);
    while(vec[vec.size()-1]+vec[vec.size()-2]<n){
        vec.push_back(vec[vec.size()-1]+vec[vec.size()-2]);
    }
    int i=0,j=0,k=vec.size()-1;
    while(j-i!=0 || k-j!=0){
        cout<<vec[i]<<" "<<vec[j]<<" "<<vec[k]<<endl;
        if(vec[i]+vec[j]+vec[k]==n){
            cout<<vec[i]<<" "<<vec[j]<<" "<<vec[k];
            return 0;
        }else if(vec[i]+vec[j]+vec[k]<n){
            if(vec[i]+vec[j+1]+vec[k]<=n){
                j++;
            }else{
                i++;
            }
        }else{
            k--;
        }
    }
    if(vec[i]+vec[j]+vec[k]==n){
        cout<<vec[i]<<" "<<vec[j]<<" "<<vec[k];
        return 0;
    }
    cout<<"I'm too stupid to solve this problem";
    return 0;
}

#include <iostream>
using namespace std;

long int* a;
long int build(int n)
{
    int i=0;
    a[i]=1;
    a[i+1]=1;
    i=2;
    for(i; i<100; i++)
    {
        a[i]=a[i-1]+a[i-2];
        if(a[i]==n)break;
    }

    return i;
}

int main()
{
    long int n;
    cin>>n;
    if(n==0)cout<<"0 0 0"<<endl;
    else if(n==1)cout<<"0 0 1"<<endl;
    else if(n==2)cout<<"0 1 1"<<endl;
    else
    {
        a = new long int [100];
        long int i = build(n);
        cout<<i<< "   "<<a[i-2]<<" "<<a[i-2]<<" "<<a[i-3]<<endl;
    }
    return 0;
}

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<string>
#include<cstring>
#include<queue>
#include<climits>
#include<vector>
#include<climits>

using namespace std;

long long fib[50];

int main(){

    int val;
    fib[0] = 0;
    fib[1] = 1;
    int pos = 1;
    while(fib[pos]<1000000000){
        pos++;
        fib[pos] = fib[pos-1]+fib[pos-2];
    }
    scanf("%d",&val);
    int i;
    for(i=0;i<pos && fib[i] < val;i++){
        for(int j=0;j<pos && fib[j] < val;j++){
            for(int k=0;k<pos && fib[k] < val;k++){
                if(fib[i]+fib[j]+fib[k] == val){
                    printf("%lld %lld %lld", fib[i], fib[j], fib[k]);
                    i = 50;
                    j = 50;
                    k = 50;
                }
            }
        }
    }
    if(i != 51){
        printf("I'm too stupid to solve this proble");
    }
    return 0;
}

#include <iostream>
using namespace std;
#include<stdio.h>

int fib(int n){
if (n==0 || n==1)
    return n;
else
return fib(n-1)+fib(n-2);
}
int main() {
    // your code goes here
    int m,a,b,c;
    scanf("%d",&m);
    if(m==0){
    printf("%d %d %d",fib(0),fib(0),fib(0));
    return 0;
    }
    for(a=0 ;a<20 ;a++)
        for(b=0 ;b<20 ;b++)
            for(c=0 ;c<20 ;c++)
            if(fib(a)+fib(b)+fib(c)==m){
            printf("%d %d %d",fib(a),fib(b),fib(c));
            return 0;
            }

            printf("I'm too stupid to solve this problem");

    return 0;
}

#include <iostream>
using namespace std;

long int fib(long int num)
{
    if(num == 0)
        return 0;
    else if(num == 1)
        return 1;
    else
    {
        return (fib(num - 1) + fib(num - 2));
    }

}

int main(void)
{
    long int fibnum = 0;
    cin >> fibnum;

    if(fibnum == 0 || fibnum == 1)
    {
        printf("I'm too stupid to solve this problem\n");
    }
    else if(fibnum == 2)
    {
        printf("0 1 1\n");
    }
    else if(fibnum == 3)
    {
        printf("1 1 1\n");
    }
    else
    {
        int a, b, c;

        for(int i = 3; fib(i) < fibnum; i++)
        {
            a = fib(i - 3);
            b = fib(i - 2);
            c = fib(i);
        }
        printf("%ld %ld %ld\n", a, b, c);
    }

    return 0;
}

#include<iostream>
#include<cmath>
using namespace std;

bool fib(int n)
{
	int s = sqrt(n);
	if (s*s == n){ return true; }
	else{ return false; }
}
bool sure(int n)
{
	if (fib(5 * pow(n, 2) + 4) && fib(5 * pow(n, 2) - 4))
	{
		return false;
	}
	else if (fib(5 * pow(n, 2) + 4) || fib(5 * pow(n, 2) - 4)){ return true; }

}
int main()
{
	int n, f = 0, s = 1,t=0,a=0;
	cin >> n;
	if (sure(n)||n==0)
	{
		for (int i = 1; t != n; i++)
		{
			t = f + s;
			if (t == n)
			{
				cout << a << " " << f << " " << s << endl;
			}
			f = s;
			s = t;
		}
		cout << a << " " << f << " " << s - 1 << endl;
	}
	else{ cout << "I'm too stupid to solve this problem\n"; }

}