#include #include #include using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf 10000000000000000 int main(){ int n,m,K; cin>>n>>m>>K; vector a(n); rep(i,n)cin>>a[i]; vector> dis(n,vector(n,Inf)); rep(i,n)dis[i][i] = 0; rep(i,m){ int x,y,z; cin>>x>>y>>z; x--;y--; dis[x][y] = z; dis[y][x] = z; } rep(i,n){ rep(j,n){ rep(k,n){ dis[j][k] = min(dis[j][k],dis[j][i]+dis[i][k]); } } } vector dp(1<>j)&1)continue; long long ni = i | (1<>k)&1){ nv = min(nv,dis[k][j]); } } nv += a[j]; nv += dp[i]; dp[ni] = min(dp[ni],nv); } } long long ans = Inf; rep(i,1<