#include <bits/stdc++.h>
using namespace std;
double dist(pair<int, int> p1, pair<int, int> p2) {
  return sqrt((p1.first - p2.first) * (p1.first - p2.first) +
              (p1.second - p2.second) * (p1.second - p2.second));
}
int main() {
  int n, m;
  scanf("%d%d", &n, &m);
  if (n == 0) {
    printf("0 1\n");
    printf("0 %d\n", m);
    printf("0 0\n");
    printf("0 %d\n", m - 1);
    return 0;
  }
  if (m == 0) {
    printf("1 0\n");
    printf("%d 0\n", n);
    printf("0 0\n");
    printf("%d 0\n", n - 1);
    return 0;
  }
  vector<pair<int, int> > v;
  v.push_back(make_pair(0, 0));
  v.push_back(make_pair(n, 0));
  v.push_back(make_pair(0, m));
  v.push_back(make_pair(n, m));
  vector<pair<int, int> > w;
  for (int i = (0); i < (n + 1); ++i)
    for (int j = (0); j < (m + 1); ++j) {
      for (int k = (0); k < (4); ++k) {
        if (dist(make_pair(i, j), v[k]) < 5) {
          w.push_back(make_pair(i, j));
          break;
        }
      }
    }
  vector<int> dla;
  double best = 0;
  for (int i1 = (0); i1 < (w.size()); ++i1)
    for (int i2 = (0); i2 < (w.size()); ++i2)
      for (int i3 = (0); i3 < (w.size()); ++i3)
        for (int i4 = (0); i4 < (w.size()); ++i4) {
          if (i1 != i2 && i1 != i3 && i1 != i4 && i2 != i3 && i2 != i4 &&
              i3 != i4) {
            double pos =
                dist(w[i1], w[i2]) + dist(w[i2], w[i3]) + dist(w[i3], w[i4]);
            if (pos > best) {
              best = pos;
              vector<int> x;
              x.push_back(i1);
              x.push_back(i2);
              x.push_back(i3);
              x.push_back(i4);
              dla = x;
            }
          }
        }
  for (int i = (0); i < (4); ++i) {
    printf("%d %d\n", w[dla[i]].first, w[dla[i]].second);
  }
  return 0;
}
