C1664 [Wannafly冬令营2018Day3]石头剪刀布

内存限制:256 MB 时间限制:1000 ms

题目描述

可怜去观看了石头剪刀布的世界最高赛事 WRSP。

今年的比赛一共有 $n$ 名选手参加,在比赛开始时,每名选手都会收到一张卡片,这张卡片上写着剪刀、石头、布中的一个。显然初始的卡牌分配情况有 $3^n$ 种。

比赛场地一共有 $n$ 个座位,最开始第 $i$ 个选手坐在第 $i$ 个座位上。

接下来发生了 $m$ 个事件,事件有两种:

  • $1\ x\ y$,主办方撤去了第 $y$ 个座位,原来在第 $y$ 个座位上的选手 $b$ 需要和 $x$ 个座位上的选手 $a$ 利用他们的卡片进行一场石头剪刀布比赛,如果 $b$ 赢了 $a$,则选手 $a$ 被淘汰,选手 $b$ 坐到第 $x$ 个座位上;否则(打平或者 $b$ 输了),则选手 $b$ 被淘汰,选手 $a$ 的坐位不变。
  • $2\ x$,可怜提出了一个问题,她想要知道在进行了之前的所有第 $1$ 类事件后,有多少种卡牌分配情况可以让第 $x$ 个选手到现在还没有被淘汰。

输入格式

第一行输入两个整数 $n,m(1 \leq n,m \leq 2 \times 10^5)$,表示选手个数和事件个数。

接下来 $m$ 行,每行描述了一个事件。如果是第一类事件,则输入三个整数 $1\ x\ y(1 \leq x,y \leq n, x \neq y)$ 且这两个座位在之前没有被撤去;如果是第二类事件,则输入两个整数 $2\ x(1 \leq x \leq n)$。

输出

对于每个第二类事件,输出一行一个整数,表示这个选手还没有被淘汰的分配情况个数对 $998244353$ 取模后的值。

样例

样例输入 1

3 5 2 1 1 2 1 2 1 1 2 3 2 1

样例输出 1

27 9 6

提示