#include <iostream>
#include <array>
#include <set>
using namespace std;
class edge{
public:
int long long value;
int long long from;
int long long to;
edge(int long long f,int long long t,int long long v){
value=v;
from=f;
to=t;
}
edge(){
value=0;
from=0;
to=0;
}
};
class maxheap{
public:
edge *heap;
int long long min;
int long long size;
int long long cap;
int long long left(int long long pos){
return pos*2+1;
}
int long long right(int long long pos){
return pos*2+2;
}
int long long parent(int long long pos){
return (pos-1)/2;
}
bool isleaf(int long long pos){
return(pos<size&&pos>=(size-1)/2);
}
void swap(int long long x,int long long y)