#abc280g. [abc280_g]Do Use Hexagon Grid 2

[abc280_g]Do Use Hexagon Grid 2

题目描述

我们有一个如下所示的无限六边形网格。

一个六边形单元格用两个整数 iijj 表示,表示为 (i,j)(i,j)
单元格 (i,j)(i,j) 与以下六个单元格相邻:

  • (i1,j1)(i-1,j-1)
  • (i1,j)(i-1,j)
  • (i,j1)(i,j-1)
  • (i,j+1)(i,j+1)
  • (i+1,j)(i+1,j)
  • (i+1,j+1)(i+1,j+1)

假设从单元格 XX 移动到单元格 YY,通过重复移动到相邻的单元格,至少需要多少次移动?我们定义这个距离为单元格 XXYY 之间的距离。
例如,单元格 (0,0)(0,0)(1,1)(1,1) 的距离是 11,单元格 (2,1)(2,1)(1,1)(-1,-1) 的距离是 33

给定 NN 个单元格 (X1,Y1),ldots,(XN,YN)(X_1,Y_1),\\ldots,(X_N,Y_N)
有多少种方式可以在这 NN 个单元格中选择一个或多个,使得任意两个被选择的单元格之间的距离至多为 DD
将答案对 998244353998244353 取模。

约束条件

  • 1leqNleq3001 \\leq N \\leq 300
  • \-109leqXi,Yileq109\-10^9\\leq X_i,Y_i \\leq 10^9
  • 1leqDleq10101\\leq D \\leq 10^{10}
  • (Xi,Yi)(X_i,Y_i) 两两不同。
  • 输入中的所有值都是整数。

输入

从标准输入中以以下格式给出输入:

NN DD X1X_1 Y1Y_1 vdots\\vdots XNX_N YNY_N

输出

打印答案。


样例输入 1

3 1
0 0
0 1
1 0

样例输出 1

5

可以选择的单元格集合有五种:$\\{(0,0)\\},\\{(0,1)\\},\\{(1,0)\\},\\{(0,0),(0,1)\\}$ 和 (0,0),(1,0)\\{(0,0),(1,0)\\}


样例输入 2

9 1
0 0
0 1
0 2
1 0
1 1
1 2
2 0
2 1
2 2

样例输出 2

33

样例输入 3

5 10000000000
314159265 358979323
846264338 -327950288
-419716939 937510582
-97494459 -230781640
628620899 862803482

样例输出 3

31