#include <bits/stdc++.h>
using namespace std;
using ll = long long;
template <typename T>
inline bool chkmin(T &a, const T &b) {
  return a > b ? a = b, 1 : 0;
}
template <typename T>
inline bool chkmax(T &a, const T &b) {
  return a < b ? a = b, 1 : 0;
}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int n, m;
int sq(int a) { return a * a; }
int dist(pair<int, int> a, pair<int, int> b) {
  return sq(a.first - b.first) + sq(a.second - b.second);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n >> m;
  if (n == 0) {
    cout << 0 << " " << 1 << "\n";
    cout << 0 << " " << m << "\n";
    cout << 0 << " " << 0 << "\n";
    cout << 0 << " " << m - 1 << "\n";
  } else if (m == 0) {
    cout << 1 << " " << 0 << "\n";
    cout << n << " " << 0 << "\n";
    cout << 0 << " " << 0 << "\n";
    cout << n - 1 << " " << 0 << "\n";
  } else {
    vector<pair<int, int>> v;
    v.push_back({0, 0});
    v.push_back({n, m});
    v.push_back({0, m});
    v.push_back({n, 0});
    v.push_back({n - 1, 0});
    v.push_back({0, m - 1});
    v.push_back({n, m - 1});
    v.push_back({n - 1, m});
    v.push_back({1, 0});
    v.push_back({n, 1});
    v.push_back({0, 1});
    v.push_back({n - 1, 0});
    v.push_back({n - 1, m});
    v.push_back({1, m});
    v.push_back({0, m - 1});
    sort(v.begin(), v.end());
    v.erase(unique(v.begin(), v.end()), v.end());
    int res = 0;
    vector<pair<int, int>> ans;
    for (int a = (int)(0); a < (int)((int)(v.size())); ++a) {
      for (int b = (int)(0); b < (int)((int)(v.size())); ++b) {
        for (int c = (int)(0); c < (int)((int)(v.size())); ++c) {
          for (int d = (int)(0); d < (int)((int)(v.size())); ++d) {
            set<int> st;
            st.insert(a);
            st.insert(b);
            st.insert(c);
            st.insert(d);
            if ((int)(st.size()) == 4) {
              if (dist(v[a], v[b]) + dist(v[b], v[c]) + dist(v[c], v[d]) >
                  res) {
                res = dist(v[a], v[b]) + dist(v[b], v[c]) + dist(v[c], v[d]);
                ans.clear();
                ans.push_back(v[a]);
                ans.push_back(v[b]);
                ans.push_back(v[c]);
                ans.push_back(v[d]);
              }
            }
          }
        }
      }
    }
    assert((int)(ans.size()) == 4);
    for (auto x : ans) cout << x.first << " " << x.second << "\n";
  }
  return 0;
}
