拦截导弹
题号:NC207452
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

A国饱受B国的导弹袭击。于是A国在边界处建立了一排高度不一的城墙。A国共建立了n座城墙,

每座城墙高度为()。每隔一段时间B国将向A国发射一枚高度为h的导弹。

导弹将保持h高度从左至右飞向A国,直到遇到某座城墙高度  满足,导弹被拦截在城墙外,但将导致城墙损坏,使其高度从 变为

若当前所有城墙均低于导弹的高度,那么导弹将打入A国境内。A国国王会时不时的派人修补某些城墙。

现在作为A国的程序员,国王要求你计算出每次导弹来袭可能打到的城墙的下标和最后实际打入A国境内的导弹数。

输入描述:

第一行为一个整数n,代表城墙数() 。

第二行为n个整数,从左至右代表每个城墙的高度 () 。

第三行为一个整数q,代表事件数()。

接下来q行,事件如题有两种形式:

事件一输入形式:”1 h”  --代表接下来有一颗高度为h的导弹从B国打过来。()

事件二输入形式:”2 id x”. --代表将在下标id处的城墙拔高x米。()

输出描述:

对于每一个事件一,输出一个整数X代表本颗导弹将撞击到下标为X的城墙。若当前所有城墙均低于导弹的高度,则输出一行字符串 "Boom!"(不含双引号).

最后,输出一个整数V代表最终将打入A国境内的导弹数。

示例1

输入

复制
4
1 2 3 4
4
1 3
1 5
2 1 5
1 1

输出

复制
3
Boom!
1
1