在 ACM-ACPC 区域赛之前,赛场主管和志愿者们正忙于为比赛做准备。他们的任务之一是为每支队伍分配桌位,使得来自同一所大学的两支队伍不会相邻。赛场主管决定不把时间浪费在这项任务上,于是要求评委们来完成。评委们认为这可以作为一个很好的比赛题目,由于他们忙于比赛的其他事务,评委们决定解决该问题的一部分,并要求参赛选手来解决剩下的部分。
评委们将生成若干种队伍分配方案,并要求参赛选手编写程序来检查每种方案是否合法。如果方案不合法,程序应统计有多少所不同的大学拥有至少两支相邻的队伍。评委 Ahmed Aly 对赛场主管说:“好吧,你可以把这些方案留到明年的比赛中使用。”
比赛场地可以表示为一个 $N$ 行 $M$ 列的二维网格。网格中的每个单元格要么被一支队伍占用,要么为空。一个单元格最多有 8 个相邻的单元格。如果一支队伍坐在场地边缘或其部分相邻单元格为空,那么它可能少于 8 个相邻的队伍。
例如,在下图中,队伍 E 有 7 支相邻的队伍,分别是 A、B、C、D、F、G 和 H,而与队伍 A 相邻的队伍是 B、D 和 E。
输入格式
程序将在一个或多个测试用例上进行测试。输入的第一行包含一个整数 $T$,表示测试用例的数量 ($1 \le T \le 100$)。接下来是各个测试用例,每个测试用例的第一行包含两个由空格分隔的整数 $N$ 和 $M$ ($1 \le N, M \le 100$),表示场地的尺寸。随后有 $N$ 行,每行包含 $M$ 个由空格分隔的整数,表示该行中各桌位的分配情况。每个整数代表分配到该桌位的大学 ID,若该桌位为空则为 -1。所有大学 ID 均为不超过 100 的正整数。
输出格式
对于每个测试用例,输出一行一个整数,表示拥有至少两支相邻队伍的不同大学的数量。
样例
输入 1
3 3 3 1 2 3 2 2 2 1 1 1 3 3 1 2 3 3 -1 1 2 -1 2 3 3 1 2 3 -1 1 5 1 2 4
输出 1
2 0 1