火锅盛宴
题号:NC14764
时间限制:C/C++/Rust/Pascal 4秒,其他语言8秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

SkyDec和YJQQQAQ都是Yazid的好朋友。他们都非常喜欢吃火锅。有一天,他们聚在一起,享受一场火锅盛宴。
在这场火锅盛宴中,有一个麻辣浓汤锅底的火锅和n种食物,每种食物数量都是无限的。我们用1至n将这些食材编号。

每种食物煮熟所需要的时间不同,第i种食物煮熟需要si单位时间。这表示如果你在第T个时刻将一个食物i下到火锅里,那么它会在第T+si个时刻被煮熟,并且此后一直会延续被煮熟的状态,直到它被拿走为止。

Yazid和YJQQQAQ的口味不同:YJQQQAQ觉得所有食物的好吃程度都是相同的;而Yazid则觉得没有两种食材的好吃程度是相同的,并且,巧合的是,编号越小的食物Yazid越喜欢吃。可怜的SkyDec由于不能吃辣,所以只能帮Yazid和YJQQQAQ煮食物。

整个火锅盛宴持续109单位时间。在整个盛宴中,三位好朋友除了谈笑风生之外,最重要的事当然就是吃东西了。在任意整数时刻,都有可能发生下列4种事件中的任意一种,我们用0至3之间的整数op描述事件类型:
  •  0 id:表示SkyDec往火锅里下了一个编号为id的食物。
  • 1:Yazid在锅内搜寻熟了的且最喜欢吃的食物,并拿走一个这种食物。特别地,如果锅里没有熟了的食物,那么Yazid会很愤怒。
  •  2 id:YJQQQAQ在锅内搜寻编号为id的食物:如果锅里不存在该种食物,则YJQQQAQ会很愤怒;如果锅里存在熟了的该食物,则YJQQQAQ会取走一个并食用;如果锅里只有未煮熟的该种食物,那么YJQQQAQ会希望知道最接近煮熟的该种食物(即锅内存在时间最长的该种食物)还需要多少时间被煮熟。
  •  3 l r:馋涎欲滴的SkyDec想知道,锅里编号在[l,r]之间的且熟了的食物总共有多少个。
整个火锅晚宴中共发生了Q个事件,且没有任意两个事件在同一时刻发生。
他们的好朋友Flvze想知道这场火锅晚宴中发生的所有事,所以请你告诉她。

输入描述:

本题包含多组数据,输入的第一行为一个正整数T,表示数据组数。接下来依次描述每组数据,对于每组数据:
第一行一个正整数n,表示食物的种类数。
第二行n个用空格隔开的正整数s1,s2,...,sn,描述每种食物煮熟需要的时间。
第三行一个正整数Q,表示事件的数目。
接下来Q行,每行若干个用空格隔开的非负整数,描述一个事件。先是两个整数t,op,分别表示发生事件的时间以及事件的类型。如果op=0或op=2,则接下来1个正整数id,意义见题目描述;如果op=1,则接下来没有其他数;如果op=3,则接下来2个正整数l,r,意义见题目描述。
我们保证t按输入顺序严格递增。
我们保证1≤ t≤ 109,0≤ op≤ 3,1≤ id≤ n,1≤ l≤ r≤ n。

输出描述:

对于每个op≠0的操作,输出一行表示答案。对于不同的op,需要输出的内容如下:
对于op=1,如果Yazid成功取走食物,则输出他取走食物的编号;否则输出"Yazid is angry."(不含引号,下同)。
对于op=2,如果YJQQQAQ成功取走食物,则输出"Succeeded!";否则,如果锅里有未煮熟的该类食物,输出最接近煮熟的该种食物还需要多少时间被煮熟;否则,输出"YJQQQAQ is angry."。
对于op=3,输出锅内编号在指定范围内的熟食的数量。
示例1

输入

复制
1
2
1 100
10
1 0 2
2 0 1
3 2 1
4 2 2
5 2 1
200 0 1
201 3 1 2
202 1
203 1
204 1

输出

复制
Succeeded!
97
YJQQQAQ is angry.
2
1
2
Yazid is angry.

备注:

对于所有数据,T≤ 4,n≤ 100,000,Q≤ 500,000,1≤ si≤ 108