#include <bits/stdc++.h>
using namespace std;
inline void FASTIO() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
}
void solve() {}
long long n, m;
set<pair<long long, long long> > s;
void add(long long x, long long y) {
  if (x >= 0 && x <= n && y >= 0 && y <= m) {
    s.emplace(x, y);
  }
}
long long sprod(const pair<long long, long long> &a,
                const pair<long long, long long> &b) {
  return a.first * b.first + a.second * b.second;
}
pair<long long, long long> operator-(const pair<long long, long long> &a,
                                     const pair<long long, long long> &b) {
  return {a.first - b.first, a.second - b.second};
}
long double dist(const pair<long long, long long> &a,
                 const pair<long long, long long> &b) {
  pair<long long, long long> c = a - b;
  return sqrt((long double)sprod(c, c));
}
long double dist(const vector<pair<long long, long long> > &a) {
  long double res = 0;
  for (long long i = (0); i < (3); i++) {
    res += dist(a[i], a[i + 1]);
  }
  return res;
}
signed main() {
  FASTIO();
  cin >> n >> m;
  add(0, 0);
  add(0, 1);
  add(1, 0);
  add(1, 1);
  add(n, 0);
  add(n, 1);
  add(n - 1, 0);
  add(n - 1, 1);
  add(0, m);
  add(1, m);
  add(0, m - 1);
  add(1, m - 1);
  add(n, m);
  add(n - 1, m);
  add(n, m - 1);
  add(n - 1, m - 1);
  vector<pair<long long, long long> > ans;
  long double mx = 0;
  for (auto i = s.begin(); i != s.end(); i++) {
    for (auto j = next(i); j != s.end(); j++) {
      for (auto k = next(j); k != s.end(); k++) {
        for (auto l = next(k); l != s.end(); l++) {
          vector<pair<long long, long long> > c{*i, *j, *k, *l};
          do {
            long double d = dist(c);
            if (d > mx) {
              ans = c;
              mx = d;
            }
          } while (next_permutation(c.begin(), c.end()));
        }
      }
    }
  }
  for (long long i = (0); i < (4); i++) {
    cout << ans[i].first << ' ' << ans[i].second << '\n';
  }
}
