#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9;
const int MOD = 1e9 + 7;
const int N = 0;
pair<int, int> a[4];
int sqr(int x) { return x * x; }
double dis(int xa, int ya, int xb, int yb) {
  return sqrt(sqr(xb - xa) + sqr(yb - ya));
}
int main() {
  int n, m;
  cin >> n >> m;
  if (n == 0)
    printf("0 1\n0 %d\n0 0\n0 %d\n", m, m - 1);
  else if (m == 0)
    printf("1 0\n%d 0\n0 0\n%d 0", n, n - 1);
  else {
    int n1 = min(n, m), m1 = n + m - n1, rev = 0;
    if (n1 != n) rev = 1;
    double mdis = 0;
    for (auto i = 1; i <= n1; i++)
      for (auto j = 0; j < n1; j++) {
        double cdis = dis(n1, m1, i, 0) + dis(i, 0, j, m1);
        if (cdis > mdis) {
          mdis = cdis;
          a[0] = pair<int, int>(0, 0);
          a[1] = pair<int, int>(n1, m1);
          a[2] = pair<int, int>(i, 0);
          a[3] = pair<int, int>(j, m1);
        }
        cdis = dis(i, 0, n1, m1) + dis(0, 0, j, m1);
        if (cdis > mdis) {
          mdis = cdis;
          a[0] = pair<int, int>(i, 0);
          a[1] = pair<int, int>(n1, m1);
          a[2] = pair<int, int>(0, 0);
          a[3] = pair<int, int>(j, m1);
        }
      }
    if (rev)
      for (auto i = 0; i <= 3; i++) swap(a[i].first, a[i].second);
    for (auto i = 0; i <= 3; i++) printf("%d %d\n", a[i].first, a[i].second);
  }
}
