#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#include "wall.h"
void buildWall(int n, int k, int op[], int left[], int right[], int height[], int f[]){
for (int i=0; i<n; i++) {
f[i] = 0;
}
vector<vector<int>> stop(n), start(n);
for (int i=0; i<k; i++) {
if (op[i] == 2) break;
int l = left[i], r = right[i];
start[l].push_back(height[i]);
stop[r].push_back(height[i]);
}
multiset<int> ms;
ms.insert(0);
for (int i=0; i<n; i++) {
for (auto x : start[i]) {
ms.insert(x);
}
f[i] = *ms.rbegin();
for (auto x : stop[i]) {
ms.erase(ms.find(x));
}
}
for (int i=0; i<n; i++) {
start[i].clear();
stop[i].clear();
}
for (int i=0; i<k; i++) {
if (op[i] == 1) continue;
int l = left[i], r = right[i];
start[l].push_back(height[i]);
stop[r].push_back(height[i]);
}
ms.clear();
ms.insert(1e9);
for (int i=0; i<n; i++) {
for (auto x : start[i]) {
ms.insert(x);
}
f[i] = min(f[i], *ms.begin());
for (auto x : stop[i]) {
ms.erase(ms.find(x));
}
}
return;
}