#include <bits/stdc++.h>
#include "quality.h"
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
template <class T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
int a[3001][3001];
int rectangle(int r, int c, int h, int w, int q[3001][3001])
{
int mn=1e9;
for(int i=0;i<r;i++)
{
if(i+h-1>=r)break;
ordered_set <int> s;
for(int i1=i;i1<=i+h-1;i1++)
{
for(int j1=0;j1<w;j1++)s.insert(q[i1][j1]);
}
for(int j1=w;j1<c;j1++)
{
mn=min(mn,*s.find_by_order(s.size()/2));
for(int i1=i;i1<=i+h-1;i1++)s.insert(q[i1][j1]);
for(int i1=i;i1<=i+h-1;i1++)s.erase(q[i1][j1-w]);
}
mn=min(mn,*s.find_by_order(s.size()/2));
}
return mn;
}