#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:16777216")
const long long inf = 2147383647;
const double pi = 2 * acos(0.0);
const double eps = 1e-7;
const long long maxint = 2147483647;
const long long minint = -2147483648;
using namespace std;
long long MIN(long long a, long long b) {
  if (a < b) return a;
  return b;
}
long long MAX(long long a, long long b) {
  if (a > b) return a;
  return b;
}
long long gcd(long long a, long long b) {
  if (b == 0)
    return a;
  else
    return gcd(b, a % b);
}
long long power(long long a, long long p) {
  if (p == 0) return 1;
  if (p & 1) {
    return a * power(a, p - 1);
  } else {
    long long c = power(a, p / 2);
    return c * c;
  }
}
long long fib[100];
int size;
void init() {
  int i;
  fib[0] = 0;
  fib[1] = 1;
  for (i = 2; i < 100; i++) {
    fib[i] = fib[i - 1] + fib[i - 2];
    if (fib[i] >= 1e9) break;
  }
  size = i;
}
int main() {
  init();
  int n;
  while (scanf("%d", &n) != EOF) {
    int i, j, k;
    for (i = 0; i < size; i++) {
      for (j = 0; j < size; j++) {
        for (k = 0; k < size; k++) {
          long long temp = fib[i] + fib[j] + fib[k];
          if (temp == n) {
            printf("%I64d %I64d %I64d\n", fib[i], fib[j], fib[k]);
            return 0;
          }
        }
      }
    }
    printf("I'm too stupid to solve this problem\n");
  }
  return 0;
}
