Cities in Alberta tend to be laid out as rectangular grids of blocks. Blocks are labeled with coordinates to from north to south and to from west to east.

The quality of living in each particular block has been ranked by a distinct number, called quality rank, between and , where is the best and is the worst.

The city planning department wishes to identify a rectangular set of blocks with dimensions from north to south and from west to east, such that the median quality rank among all blocks in the rectangle is the best. and are *odd* numbers not exceeding and respectively. The *median quality rank* among an odd number of quality ranks is defined to be the quality rank in the set such that the number of quality ranks better than equals the number of quality ranks worse than .

You are to implement a procedure **rectangle(R,C,H,W,Q)** where and represent the total size of the city, and represent the dimensions of the set of blocks, and is an array such that is the quality rank for the block labeled from north to south and from west to east.

Your implementation of **rectangle** must return a number: the best (numerically smallest) possible median quality rank of an by rectangle of blocks.

Each test run will only call **rectangle** once.

#### Example 1

R=5,C=5,H=3,W=3,Q= 5 11 12 16 25 17 182 7 104 2320 3 124 2119 146 22 8 13 159

For this example, the best (numerically smallest) median quality rank of is achieved by the middle-right rectangle of shown in bold. That is,

rectangle(R,C,H,W,Q)=9

#### Example 2

R=2,C=6,H=1,W=5,Q= 6 1 2 11 7 5 9 3 4 10 12 8

For this example the correct answer is .

##### Subtask 1 [20 points]

Assume and do not exceed .

##### Subtask 2 [20 points]

Assume and do not exceed .

##### Subtask 3 [20 points]

Assume and do not exceed .

##### Subtask 4 [20 points]

Assume and do not exceed .

##### Subtask 5 [20 points]

Assume and do not exceed .

#### Implementation Details

- Implementation folder:
`/home/ioi2010-contestant/quality/`

(prototype: quality.zip) - To be implemented by contestant:
`quality.c`

or`quality.cpp`

or`quality.pas`

- Contestant interface:
`quality.h`

or`quality.pas`

- Grader interface:
*none* - Sample grader:
`grader.c`

or`grader.cpp`

or`grader.pas`

- Sample grader input:
`grader.in.1`

`grader.in.2`

etc.

*Note: The first line of input contains: The following lines contain the elements of , in row-major order.* - Expected output for sample grader input:
`grader.expect.1`

`grader.expect.2`

etc.

## Comments

For anyone getting CE, the exact function signature is: