#include <bits/stdc++.h>
using namespace std;
long long fen[2][2][1010][1010];
int n, m;
void updateFen(int a, int b, int x, int y, long long t) {
  for (int i = x; i <= n / 2 + 5; i += i & (-i))
    for (int j = y; j <= n / 2 + 5; j += j & (-j)) fen[a][b][i][j] ^= t;
}
long long getFen(int a, int b, int x, int y) {
  long long res = 0;
  for (int i = x; i > 0; i -= (i & (-i)))
    for (int j = y; j > 0; j -= (j & (-j))) res ^= fen[a][b][i][j];
  return res;
}
void update(int x, int y, long long t) {
  updateFen(x % 2, y % 2, x / 2 + 1, y / 2 + 1, t);
}
long long get(int x, int y) {
  return getFen(x % 2, y % 2, x / 2 + 1, y / 2 + 1);
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    int t;
    cin >> t;
    if (t == 1) {
      int x1, y1, x2, y2;
      long long res = 0;
      cin >> x1 >> y1 >> x2 >> y2;
      res ^= get(x2, y2);
      res ^= get(x1 - 1, y2);
      res ^= get(x2, y1 - 1);
      res ^= get(x1 - 1, y1 - 1);
      cout << res << endl;
    } else {
      int x1, y1, x2, y2;
      long long v;
      cin >> x1 >> y1 >> x2 >> y2 >> v;
      update(x1, y1, v);
      update(x2 + 1, y1, v);
      update(x1, y2 + 1, v);
      update(x2 + 1, y2 + 1, v);
    }
  }
}
