#include <bits/stdc++.h>
using namespace std;
void printPoints(int n, int m) {
  if (n == 0) {
    printf("%d %d\n", 0, 1);
    printf("%d %d\n", 0, m);
    printf("%d %d\n", 0, 0);
    printf("%d %d\n", 0, m - 1);
  } else {
    printf("%d %d\n", 1, 0);
    printf("%d %d\n", n, 0);
    printf("%d %d\n", 0, 0);
    printf("%d %d\n", n - 1, 0);
  }
}
float diagonal(int n, int m) { return sqrt(n * n + m * m); }
float nextDiagonal(int n, int m) {
  if (n < m) {
    int temp = n;
    n = m;
    m = temp;
  }
  if (m == 0)
    return n - 1;
  else if (m == 1)
    return diagonal(n - 1, m);
  else
    return diagonal(n, m - 1);
}
void printBothDiagonals(int n, int m) {
  printf("%d %d\n", 0, 0);
  printf("%d %d\n", n, m);
  if (n > m) {
    printf("%d %d\n", 0, m);
    printf("%d %d\n", n, 0);
  } else {
    printf("%d %d\n", n, 0);
    printf("%d %d\n", 0, m);
  }
}
void printSingleDiagonal(int n, int m) {
  bool horz = false;
  if (n < m) horz = true;
  if (horz)
    printf("%d %d\n", 1, 0);
  else
    printf("%d %d\n", 0, 1);
  printf("%d %d\n", n, m);
  printf("%d %d\n", 0, 0);
  if (horz)
    printf("%d %d\n", n - 1, m);
  else
    printf("%d %d\n", n, m - 1);
}
int main() {
  int n, m;
  cin >> n >> m;
  float diagonalLen = diagonal(n, m);
  float nextDiag = nextDiagonal(n, m);
  if (n == 0 || m == 0)
    printPoints(n, m);
  else {
    float length1 = diagonalLen + (n > m ? n : m);
    float length2 = 2 * nextDiag;
    if ((length1 - length2) > .000006)
      printBothDiagonals(n, m);
    else
      printSingleDiagonal(n, m);
  }
}
