题号:NC232413
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述
你要粉刷一段
栅栏。
栅栏的长度为

,分为

段长度为

的格子,编号为

。每一个格子被粉刷颜色必须相同。共有

种颜色,编号为

。设第

个格子内刷颜色

。
定义

为一个极长颜色连续段,当且仅当同时满足:
- 第
)
个格子内的颜色相同;
-

或

;
-

或

。
你会随机粉刷每一个栅栏的格子(即,对于每个格子,等概率随机染它目前可以染的颜色)。你想知道极长颜色连续段个数的期望对

取模的值。
可难满足的栅栏主人提出了一些要求。有

次操作,每次加入一条限制「

不能是

」,或删除一条限制。你需要在每次操作后求出答案。
输入描述:
第一行是三个正整数
。
接下来
行,每行为以下两种:
- `1 x y` 加入限制「
不能是
」。保证这次操作之前,
可以是
。
- `2 id` 取消第

个操作的限制(下标从

开始,取消的操作保证是第一种类型的操作)。
对于所有数据,

,

,

,保证任意时刻至少有一种合法方案。
输出描述:
行,对初始状态、每个操作后的状态分别输出答案对
取模的值。