#include <bits/stdc++.h>
using namespace std;
inline double myDistance(const pair<int, int>& a, const pair<int, int>& b) {
  return sqrt(pow(a.first - b.first, 2) + pow(a.second - b.second, 2));
}
int main() {
  int n, m;
  cin >> n >> m;
  set<pair<int, int> > candidates;
  const int NEIGHBOURS = 2;
  for (int i = 0; i <= min(NEIGHBOURS, n); ++i) {
    for (int j = 0; j <= min(NEIGHBOURS, m); ++j) {
      candidates.insert(make_pair(i, j));
    }
  }
  for (int i = 0; i <= min(NEIGHBOURS, n); ++i) {
    for (int j = max(0, m - NEIGHBOURS); j <= m; ++j) {
      candidates.insert(make_pair(i, j));
    }
  }
  for (int i = max(0, n - NEIGHBOURS); i <= n; ++i) {
    for (int j = 0; j <= min(NEIGHBOURS, m); ++j) {
      candidates.insert(make_pair(i, j));
    }
  }
  for (int i = max(0, n - NEIGHBOURS); i <= n; ++i) {
    for (int j = max(0, m - NEIGHBOURS); j <= m; ++j) {
      candidates.insert(make_pair(i, j));
    }
  }
  double max_length = 0;
  vector<pair<int, int> > v(candidates.begin(), candidates.end());
  vector<pair<int, int> > sequence(4);
  for (size_t i = 0; i < v.size(); ++i) {
    for (size_t j = 0; j < v.size(); ++j) {
      for (size_t k = 0; k < v.size(); ++k) {
        for (size_t m = 0; m < v.size(); ++m) {
          if (i == j || i == k || i == m || j == k || j == m || k == m)
            continue;
          double inner_length = myDistance(v[i], v[j]) +
                                myDistance(v[j], v[k]) + myDistance(v[k], v[m]);
          if (inner_length > max_length) {
            max_length = inner_length;
            sequence[0] = v[i];
            sequence[1] = v[j];
            sequence[2] = v[k];
            sequence[3] = v[m];
          }
        }
      }
    }
  }
  for (size_t i = 0; i < sequence.size(); ++i) {
    cout << sequence[i].first << ' ' << sequence[i].second << '\n';
    ;
  }
}
