#include using namespace std; #include using namespace atcoder; using ll=long long; using Graph=vector>; #define MAX 20005 //#define MOD 1000000007 #define MOD 998244353 //#define INF 1000000000 #define INF 1000000000000000000 class UnionFind{ int n; vector parent; public: UnionFind(int n_):n(n_){ parent.resize(n); iota(parent.begin(),parent.end(),0); } int find(int x){ int y=parent[x]; if(y!=parent[y]){ y=find(y); } return parent[x]=y; } void unite(int a,int b){ int x=find(a); int y=find(b); if(x!=y){ parent[x]=y; } } bool same(int a,int b){ int x=find(a); int y=find(b); return x==y; } }; int main(){ int N,M,K; cin>>N>>M>>K; vector A(N); for(int i=0;i>A[i]; } vector> dist(N,vector(N,INF)); for(int i=0;i>x>>y>>z; x--;y--; dist[x][y]=z; dist[y][x]=z; } for(int k=0;k index; for(int i=0;i>i)&1)==1){ index.push_back(i); } } if(index.size()!=K){ continue; } priority_queue,vector>,greater>> pq; for(int i=0;i(ans,sub); } cout<