#include <bits/stdc++.h>
using namespace std;
int n, m;
double dis(int x, int y) { return sqrt(x * x + y * y); }
struct Solution {
  int x[4], y[4];
  double L;
  Solution() {}
  Solution(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) {
    x[0] = x1;
    x[1] = x2;
    x[2] = x3;
    x[3] = x4;
    y[0] = y1;
    y[1] = y2;
    y[2] = y3;
    y[3] = y4;
  }
  void cal() {
    L = 0.0;
    for (int i = 1; i < 4; i++) {
      L += dis(x[i] - x[i - 1], y[i] - y[i - 1]);
    }
  }
  void print() {
    for (int i = 0; i < 4; i++) printf("%d %d\n", x[i], y[i]);
  }
  bool operator<(const Solution &tmp) const { return L > tmp.L; }
};
int main() {
  while (~scanf("%d %d", &n, &m)) {
    if (n == 0) {
      puts("0 1");
      printf("0 %d\n", m);
      puts("0 0");
      printf("0 %d\n", m - 1);
    } else if (m == 0) {
      puts("1 0");
      printf("%d 0\n", n);
      puts("0 0");
      printf("%d 0\n", n - 1);
    } else {
      vector<Solution> V;
      V.push_back(Solution(0, 0, n, m, n, 0, 0, m));
      V.push_back(Solution(0, 0, n, m, 0, m, n, 0));
      V.push_back(Solution(0, 1, n, m, 0, 0, n, m - 1));
      V.push_back(Solution(1, 0, n, m, 0, 0, n - 1, m));
      for (int i = 0; i < V.size(); i++) V[i].cal();
      sort(V.begin(), V.end());
      V[0].print();
    }
  }
  return 0;
}
