CF1290F Making Shapes

Description

You are given $ n $ pairwise non-collinear two-dimensional vectors. You can make shapes in the two-dimensional plane with these vectors in the following fashion: 1. Start at the origin $ (0, 0) $ . 2. Choose a vector and add the segment of the vector to the current point. For example, if your current point is at $ (x, y) $ and you choose the vector $ (u, v) $ , draw a segment from your current point to the point at $ (x + u, y + v) $ and set your current point to $ (x + u, y + v) $ . 3. Repeat step 2 until you reach the origin again. You can reuse a vector as many times as you want. Count the number of different, non-degenerate (with an area greater than $ 0 $ ) and convex shapes made from applying the steps, and the vectors building the shape are in counter-clockwise fashion, such that the shape can be contained within a $ m \times m $ square. Since this number can be too large, you should calculate it by modulo $ 998244353 $ . Two shapes are considered the same if there exists some parallel translation of the first shape to another. A shape can be contained within a $ m \times m $ square if there exists some parallel translation of this shape so that every point $ (u, v) $ inside or on the border of the shape satisfies $ 0 \leq u, v \leq m $ .

Input Format

N/A

Output Format

N/A

Explanation/Hint

The shapes for the first sample are: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1290F/1435a49a0854cf885bd0a880b2bd4ec616aaecf0.png)The only shape for the second sample is: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1290F/c198c6d97ae318f4efbc29b95f2307d41e83d32d.png)The only shape for the fourth sample is: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1290F/5612d8b3b2e07c811bb5d8b4ac9e1b97873da5e3.png)