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

,分为 

 段长度为 

 的格子,编号为 

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

 种颜色,编号为 

。设第 

 个格子内刷颜色 

。 
 定义 

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

 或 

;
 - 

 或 

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

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

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

 不能是 

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

 个操作的限制(下标从 

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

,

,

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