编程题
### 问题描述
野兽先辈有一个 $n \times n$ 的网格,代表森林的地图。每个方格要么为空,要么有一棵树。你的任务是处理以下类型的 $q$ 个查询:
1. 改变一个方格的状态,空改为树或树改为空。
2. 森林中矩形内树的棵数。
### 输入格式
第一行有两个整数 $n$ 和 $q$,表示森林的大小和查询的数量。
接下来有 $n$ 行描述森林。每行有 $n$ 个字符:`.` 表示一个空方格,`*` 表示一棵树。
最后,有 $q$ 行描述查询。每行的格式要么是 $1$ $x$ $y$:表示改变 $(x, y)$ 的状态;要么是 $2$ $x_1$ $y_1$ $x_2$ $y_2$:表示查询左上角为 $(x_1, y_1)$ 右下角为 $(x_2, y_2)$ 的矩形内的树的棵数。
### 输出格式
打印第二种类型查询的答案。
### 样例输入
```
4 3
.*..
*.**
**..
****
2 2 2 3 4
1 3 3
2 2 2 3 4
```
### 样例输出
```
3
4
```
### 评测数据规模
$1 \leq n \leq 1000$,$1 \leq q \leq 10^5$,$1 \leq x, y \leq n$,$1 \leq x_1 \leq x_2 \leq n$,$1 \leq y_1 \leq y_2 \leq n$。