露西、天空与钻石
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

天空中有许多钻石。

露西发现天空中的钻石总是呈一个树形结构。

开始天空中有一个根节点(编号为 ),根节点上有  个钻石,每个钻石的美丽程度都是 

天空中发生了  个事件,第  个事件有两种:

1.给定整数 ,表示天空中出现了一个新节点(编号为 ),这个节点的父亲是 。在这个节点上有  个钻石,每个钻石的美丽程度都是 
2.给定整数 ,表示露西准备从节点  到根节点的路径上的所有节点中摘走正好  颗钻石,且美丽程度之和最大。当两个节点上的钻石的美丽程度相同时,露西会优先取编号大的节点上的钻石。如果路径上没有足够的钻石,露西会摘走全部的钻石。(事件之间不独立)

对于每种二号事件,你要求出摘到的钻石数量和最大美丽之和。


输入描述:


本题强制在线。

第一行三个整数 ),分别表示事件个数,根节点上钻石个数和美丽程度。

接下来  行,第  行的输入为以下两种格式中的一种:

),表示发生了事件一。其中  为  加密后的结果,真实的  为上一次询问中两个问题的答案之和,如果没有上一次询问则 

),表示发生了事件二。

操作含义详见题目描述,保证操作中节点  存在。


输出描述:

对于每个二号事件,一行两个整数分别表示摘到的钻石数和美丽程度之和。
示例1

输入

复制
10 10 1
2 0 7
1 0 4 4
1 0 2 8
1 1 4 7
1 0 2 7
2 5 15
1 3 3 4
1 1 5 5
1 5 3 3
2 9 9

输出

复制
7 7
15 77
6 21

说明

强制在线前的输入:
10 10 1
2 0 7
1 0 4 4
1 2 2 8
1 3 4 7
1 4 2 7
2 5 15
1 4 3 4
1 5 5 5
1 7 3 3
2 9 9