#include <bits/stdc++.h>
int n, q;
int qry[100010][5], ans[100010];
int tree[5010][10010];
void add(int x, int y, int val) {
  int i, j;
  for (i = x; i <= 5000; i += i & (-i))
    for (j = y; j <= 10000; j += j & (-j)) tree[i][j] += val;
}
int query(int x, int y) {
  int i, j, ret = 0;
  for (i = x; i; i -= i & (-i))
    for (j = y; j; j -= j & (-j)) ret += tree[i][j];
  return ret;
}
int main() {
  int i, l, x, y;
  scanf("%d%d", &n, &q);
  for (i = 1; i <= q; i++) {
    scanf("%d", &qry[i][0]);
    if (qry[i][0] == 1)
      scanf("%d%d%d%d", &qry[i][1], &qry[i][2], &qry[i][3], &qry[i][4]);
    else
      scanf("%d%d", &qry[i][1], &qry[i][2]);
  }
  for (i = 1; i <= q; i++) {
    if (qry[i][0] == 1) {
      x = qry[i][2];
      y = qry[i][3];
      l = qry[i][4];
      if (qry[i][1] == 1) {
        add(x + l + 1, y, -1);
        add(x, y, 1);
        add(x + l + 1, 1, 1);
        add(x, 1, -1);
      } else if (qry[i][1] == 2) {
        add(x + l + 1, y + 1, 1);
        add(x, y + 1, -1);
        add(x + l + 1, 1, -1);
        add(x, 1, 1);
      } else if (qry[i][1] == 3) {
        add(x + 1, y, -1);
        add(x - l, y, 1);
        add(x + 1, 1, 1);
        add(x - l, 1, -1);
      } else {
        add(x + 1, y + 1, 1);
        add(x - l, y + 1, -1);
        add(x + 1, 1, -1);
        add(x - l, 1, 1);
      }
    } else {
      x = qry[i][1];
      y = qry[i][2];
      ans[i] += query(x, y);
    }
  }
  memset(tree, 0, sizeof(tree));
  for (i = 1; i <= q; i++) {
    if (qry[i][0] == 1) {
      x = qry[i][2];
      y = qry[i][3];
      l = qry[i][4];
      if (qry[i][1] == 1) {
        add(x + l + 1, x + y + l + 1, 1);
        add(x, x + y + l + 1, -1);
        add(x + l + 1, 1, -1);
        add(x, 1, 1);
      } else if (qry[i][1] == 4) {
        add(x + 1, x + y - l, -1);
        add(x - l, x + y - l, 1);
        add(x + 1, 1, 1);
        add(x - l, 1, -1);
      }
    } else {
      x = qry[i][1];
      y = qry[i][2];
      ans[i] += query(x, x + y);
    }
  }
  memset(tree, 0, sizeof(tree));
  for (i = 1; i <= q; i++) {
    if (qry[i][0] == 1) {
      x = qry[i][2];
      y = qry[i][3];
      l = qry[i][4];
      if (qry[i][1] == 2) {
        add(x + l + 1, y - l - x + 5000, -1);
        add(x, y - l - x + 5000, 1);
        add(x + l + 1, 1, 1);
        add(x, 1, -1);
      } else if (qry[i][1] == 3) {
        add(x + 1, y + l - x + 5000 + 1, 1);
        add(x - l, y + l - x + 5000 + 1, -1);
        add(x + 1, 1, -1);
        add(x - l, 1, 1);
      }
    } else {
      x = qry[i][1];
      y = qry[i][2];
      ans[i] += query(x, y - x + 5000);
    }
  }
  for (i = 1; i <= q; i++)
    if (qry[i][0] == 2) printf("%d\n", ans[i]);
  return 0;
}
