#include <bits/stdc++.h>
using namespace std;
int n;
int m;
class A {
 public:
  long long int bit[1003][1003];
  A() { memset(bit, 0, sizeof(bit)); }
  void add(int i, int j, long long int x) {
    i++;
    j++;
    while (i < 1003) {
      int jj = j;
      while (jj < 1003) {
        bit[i][jj] ^= x;
        jj += jj & -jj;
      }
      i += i & -i;
    }
  }
  long long int sum(int i, int j) {
    i++;
    j++;
    long long int r = 0;
    while (i) {
      int jj = j;
      while (jj) {
        r ^= bit[i][jj];
        jj -= jj & -jj;
      }
      i -= i & -i;
    }
    return r;
  }
};
A bb[5];
int get_id(int a, int b) { return ((a & 1) << 1) | (b & 1); }
int main() {
  scanf("%d%d", &n, &m);
  while (m--) {
    int ty;
    scanf("%d", &ty);
    if (ty == 1) {
      int a, b, c, d;
      scanf("%d%d%d%d", &a, &c, &b, &d);
      a--;
      b--;
      c--;
      d--;
      long long int ans = bb[get_id(b, d)].sum(b, d) ^
                          bb[get_id(a - 1, c - 1)].sum(a - 1, c - 1) ^
                          bb[get_id(b, c - 1)].sum(b, c - 1) ^
                          bb[get_id(a - 1, d)].sum(a - 1, d);
      printf("%lld\n", ans);
    } else {
      int a, b, c, d;
      scanf("%d%d%d%d", &a, &c, &b, &d);
      long long int x;
      scanf("%lld", &x);
      bb[get_id(b, d)].add(b, d, x);
      bb[get_id(a - 1, c - 1)].add(a - 1, c - 1, x);
      bb[get_id(b, c - 1)].add(b, c - 1, x);
      bb[get_id(a - 1, d)].add(a - 1, d, x);
    }
  }
  return 0;
}
