Water#1496

Water

2 seconds
64 megabytes
Hard

Vitaliy is the director of a small water supply company, working at a water tower. This tower is a cylindrical structure with a height of meters and is initially filled to the brim with water.

Due to its age, the water tower frequently develops leaks, which Vitaliy occasionally repairs. As a director, he is keen to monitor the water level in the tower but prefers not to climb up every time to check.

Your task is to write a program that processes the following types of requests:

  1. At time , a leak appears at a height with a water outflow rate of .

  2. At time , Vitaliy repairs all leaks at height .

  3. At time , Vitaliy wants to know the current water level.

Water will only flow out of a hole if the water level is above the hole's height. Initially, the tower is full. The outflow rate indicates that in one unit of time, a volume of water equivalent to meters of water in the tower is lost through the hole.

Input

The first line contains two integers and (1 \leq n \leq 10^5; 1 \leq H \leq 10^9) — the number of requests and the height of the water tower. The following lines describe the requests. Each line starts with an integer (1 \leq k \leq 3) indicating the type of request. Depending on the request type, the line may include one to three integers from , , and (0 \leq t \leq 10^9; 0 \leq h \leq H; 1 \leq v \leq 10^9). Requests are given in chronological order, with no two requests occurring at the same time.

Output

For each request of the third type, output a single number representing the water level in the tower at that specific time.

The output must have a relative or absolute accuracy of 10^{-9}. This means if the correct answer is , and your output is , it will be considered correct if |a - p|/\max(a, 1) \leq 10^{-9}.

Examples

Example 1

Loading
Loading