#include <bits/stdc++.h>

using namespace std;

main() {
	int n;
	cin >> n;
	cout << 0 << " " << 0 << " " << n << endl;
	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 <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 <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];
}

/*
 * 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;
}

/* 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<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<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 <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<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<bits/stdc++.h>
using namespace std;
int n;
int main(){
    scanf("%d",&n);
    printf("%d 0 0",n);
    return 0;
}

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n;
	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";
}
//CF199A

#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<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()
{
    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;
#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>
using namespace std;
int n;
int main()
{
	cin>>n;
	cout<<n<<" 0 0";
	return 0;
}

#include <iostream>

using namespace std;

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

    return 0;
}

//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 <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 <iostream>

using namespace std;

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

#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;
}

#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<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;
}

#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 <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 <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;
    }
}

#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 <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;
}

#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;
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/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 <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>
#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"; }
	}
}

// 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<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>
#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 <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<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<iostream>
using namespace std;
int main(){
    int n; cin >> n; cout << n << " 0 0";
}

#include<bits/stdc++.h>

using namespace std;

int main(){

    int t;
    cin >> t;

    cout << "0 0 " << t ;

}

#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>
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 <iostream>

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

#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 <conio.h>
using namespace std;
int main()
{
  int n;
  cin>>n;
  cout<<0<<" "<<0<<" "<<n;

 }

#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;
}

/**-------------------------
|--------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 n;
cin >> n;
cout << 0 << " " << 0 << " " << n << endl;
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<stdio.h>
int main()
{
int a;
scanf("%d",&a);
printf("%d 0 0",a);
return 0;
}

#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>
#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 <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;
}

#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];

    }
}

//============================================================================
// 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 <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 <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>

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>
#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;
}

#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<iostream>
using namespace std;
long long n;
int main()
{
	while(cin>>n){
	cout<<"0 0 "<<n<<endl;
	}
	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<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<bits/stdc++.h>
using namespace std;

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

}

#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 <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 <iostream>
#include <cmath>
using namespace std;
int main ()
{
int a;
cin>>a;
cout<<a<<" "<<0<<" "<<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>
using namespace std;

int main()
{

	int n,z=0;

	cin>>n;

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

	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<stdio.h>
main()
{
	int n;
 	while(scanf("%d",&n)!=EOF)
	printf("0 0 %d\n",n);
}

// 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;
}

#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<stdio.h>
int main()
{
    int n;
	while(scanf("%d",&n)!=EOF)
	printf("%d %d %d\n",0,0,n);
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 <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;

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"; }

}