#include <bits/stdc++.h>
using namespace std;
bool check(pair<int, int> p, int n, int m) {
  return p.first >= 0 && p.second >= 0 && p.first <= n && p.second <= m;
}
int dist(pair<int, int> p1, pair<int, int> p2) {
  return (p1.first - p2.first) * (p1.first - p2.first) +
         (p1.second - p2.second) * (p1.second - p2.second);
}
void add(pair<int, int> p, int n, int m, set<pair<int, int> > &dots) {
  for (int i = -1; i <= 1; ++i)
    for (int j = -1; j <= 1; ++j)
      if (check(make_pair(p.first + i, p.second + j), n, m))
        dots.insert(make_pair(p.first + i, p.second + j));
}
int main() {
  int n, m;
  cin >> n >> m;
  set<pair<int, int> > dots;
  add(make_pair(0, 0), n, m, dots);
  add(make_pair(0, m), n, m, dots);
  add(make_pair(n, 0), n, m, dots);
  add(make_pair(n, m), n, m, dots);
  int lenght = 0;
  vector<pair<int, int> > ans(4);
  for (auto it1 = dots.begin(); it1 != dots.end(); ++it1)
    for (auto it2 = dots.begin(); it2 != dots.end(); ++it2)
      for (auto it3 = dots.begin(); it3 != dots.end(); ++it3)
        for (auto it4 = dots.begin(); it4 != dots.end(); ++it4) {
          set<pair<int, int> > last_check;
          last_check.insert(*it1);
          last_check.insert(*it2);
          last_check.insert(*it3);
          last_check.insert(*it4);
          if (last_check.size() != 4) continue;
          int l_lenght = 0;
          l_lenght += dist(*it1, *it2);
          l_lenght += dist(*it2, *it3);
          l_lenght += dist(*it3, *it4);
          if (l_lenght > lenght) {
            lenght = l_lenght;
            ans[0] = *it1;
            ans[1] = *it2;
            ans[2] = *it3;
            ans[3] = *it4;
          }
        }
  for (int i = 0; i < ans.size(); ++i)
    cout << ans[i].first << ' ' << ans[i].second << endl;
  return 0;
}
