#include using namespace std; using ll = long long; int main() { ios::sync_with_stdio(false); cin.tie(0); int n, m; cin >> n >> m; vector p(n); for(auto &&v : p) cin >> v; vector> E(m); for(auto &&[u, v, w] : E){ cin >> u >> v >> w; u--, v--; } ll mn = 1ll << 60, ans = 0; vector> dp(n); for(int i = 0; i < n; i++) dp[i] = make_pair(p[i], 1); for(int i = 0; i < n; i++){ vector> ndp(n, make_pair(1ll << 62, 0)); for(auto [u, v, w] : E){ if(dp[u].first + w < ndp[v].first){ ndp[v].first = dp[u].first + w; ndp[v].second = 0; } if(dp[u].first + w == ndp[v].first) ndp[v].second += dp[u].second; } swap(dp, ndp); for(int i = 0; i < n; i++){ ll v = dp[i].first + p[i]; if(v < mn){ mn = v; ans = 0; } if(mn == v) ans += dp[i].second; } } cout << mn << " " << ans << '\n'; }