#include <bits/stdc++.h>
using namespace std;
inline int log(const char* format, ...) { return 0; }
const double EPS = 10e-8;
const int MAX = 1000;
const int INF = 1 << 30;
int main(int argc, char** argv) {
  int n, m;
  ios::sync_with_stdio(false);
  cin >> n >> m;
  set<pair<int, int> > S;
  S.insert(make_pair(0, 0));
  S.insert(make_pair(n, m));
  S.insert(make_pair(n, 0));
  S.insert(make_pair(0, m));
  if (m > 0) {
    S.insert(make_pair(0, 1));
    S.insert(make_pair(n, m - 1));
  }
  if (n > 0) {
    S.insert(make_pair(1, 0));
    S.insert(make_pair(n - 1, m));
  }
  vector<pair<int, int> > P;
  for (set<pair<int, int> >::iterator it = S.begin(); it != S.end(); it++) {
    P.push_back(*it);
  }
  int I[6];
  int size = P.size();
  for (int i = 0; i < size; i++) {
    I[i] = i;
  }
  int ans[6];
  double max_dist = 0;
  do {
    double sum = 0;
    for (int i = 0; i < 3; i++) {
      int dx = P[I[i + 1]].first - P[I[i]].first;
      int dy = P[I[i + 1]].second - P[I[i]].second;
      double dist = dx * dx + dy * dy;
      sum += dist;
    }
    if (max_dist < sum) {
      max_dist = sum;
      ans[0] = I[0];
      ans[1] = I[1];
      ans[2] = I[2];
      ans[3] = I[3];
    }
  } while (next_permutation(I, I + size));
  cout << P[ans[0]].first << " " << P[ans[0]].second << endl;
  cout << P[ans[1]].first << " " << P[ans[1]].second << endl;
  cout << P[ans[2]].first << " " << P[ans[2]].second << endl;
  cout << P[ans[3]].first << " " << P[ans[3]].second << endl;
  return EXIT_SUCCESS;
}
