#include <iostream>
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int n;
vector<vector<int>>adj;
int id = 1;
int scc = 0;
vector<int>node_id;
vector<bool>instack;
stack<int>stk;
vector<bool>vis;
vector<int>low_link;
vector<int>kindom;
void dfs(int node){
vis[node] = 1;
instack[node] = 1;
stk.push(node);
node_id[node] = id++;
low_link[node] = node_id[node];
for(auto x:adj[node]){
if(!vis[x]) dfs(x);
if(instack[x]) low_link[node] = min(low_link[node], low_link[x]);
}
if(low_link[node] == node_id[node]){
while(!stk.empty()){
int x = stk.top();
stk.pop();
instack[x] = 0;
low_link[x] = low_link[node];
kindom[x] = (scc + 1);
if(x == node) break;
}
scc++;
}
}
void tarjan(){
for(int i = 1;i<=n;i++){
if(!vis[i]) dfs(i);
}
}
ll M = 1e9 + 7;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin>>n;
vector<ll>cost(n + 1);
for(int i = 1; i<=n;i++) cin>>cost[i];
adj.resize(n + 1);
int m; cin>>m;
for(int i = 0;i<m;i++){
int u,v; cin>>u>>v; adj[u].push_back(v);
}
vis.resize(n + 1,0);
low_link.resize(n + 1);
iota(low_link.begin(), low_link.end(),0);
instack.resize(n + 1,0);
node_id.resize(n + 1,0);
kindom.resize(n + 1);
tarjan();
vector<ll> freq(scc + 1,0ll);
vector<ll> mn(scc + 1, 2e9 + 1ll);
for(int i = 1; i <=n ; i++){
mn[kindom[i]] = min(mn[kindom[i]], cost[i]);
}
ll sum = 0ll;
for(int i = 1; i <= scc ; i++) sum += mn[i];
for(int i = 1; i <= n; i++){
if(cost[i] == mn[kindom[i]]) freq[kindom[i]]++;
}
ll count = 1ll;
for(int i = 1; i <= scc; i++)
count = (count*freq[i])%M;
cout<<sum<<" "<<count<<'\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdHlwZWRlZiBsb25nIGxvbmcgbGw7IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IG47CnZlY3Rvcjx2ZWN0b3I8aW50Pj5hZGo7CmludCBpZCA9IDE7CmludCBzY2MgPSAwOwp2ZWN0b3I8aW50Pm5vZGVfaWQ7CnZlY3Rvcjxib29sPmluc3RhY2s7CnN0YWNrPGludD5zdGs7CnZlY3Rvcjxib29sPnZpczsKdmVjdG9yPGludD5sb3dfbGluazsKdmVjdG9yPGludD5raW5kb207Cgp2b2lkIGRmcyhpbnQgbm9kZSl7Cgl2aXNbbm9kZV0gPSAxOwoJaW5zdGFja1tub2RlXSA9IDE7CglzdGsucHVzaChub2RlKTsKCW5vZGVfaWRbbm9kZV0gPSBpZCsrOwoJbG93X2xpbmtbbm9kZV0gPSBub2RlX2lkW25vZGVdOwoJCglmb3IoYXV0byB4OmFkaltub2RlXSl7CgkJaWYoIXZpc1t4XSkgZGZzKHgpOwoJCWlmKGluc3RhY2tbeF0pIGxvd19saW5rW25vZGVdID0gbWluKGxvd19saW5rW25vZGVdLCBsb3dfbGlua1t4XSk7Cgl9CglpZihsb3dfbGlua1tub2RlXSA9PSBub2RlX2lkW25vZGVdKXsKCQl3aGlsZSghc3RrLmVtcHR5KCkpewoJCQlpbnQgeCA9IHN0ay50b3AoKTsgCgkJCXN0ay5wb3AoKTsKCQkJaW5zdGFja1t4XSA9IDA7CgkJCWxvd19saW5rW3hdID0gbG93X2xpbmtbbm9kZV07CgkJCWtpbmRvbVt4XSA9IChzY2MgKyAxKTsKCQkJaWYoeCA9PSBub2RlKSBicmVhazsKCQkJCgkJfQoJCXNjYysrOwoJfQp9CnZvaWQgdGFyamFuKCl7Cglmb3IoaW50IGkgPSAxO2k8PW47aSsrKXsKCQlpZighdmlzW2ldKSBkZnMoaSk7Cgl9Cn0KCmxsIE0gPSAxZTkgKyA3OyAKaW50IG1haW4oKSB7Cglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKCWNpbi50aWUoTlVMTCk7IGNvdXQudGllKE5VTEwpOwoJCgljaW4+Pm47CiAgICB2ZWN0b3I8bGw+Y29zdChuICsgMSk7IAogICAgZm9yKGludCBpID0gMTsgaTw9bjtpKyspIGNpbj4+Y29zdFtpXTsgCglhZGoucmVzaXplKG4gKyAxKTsKCWludCBtOyBjaW4+Pm07Cglmb3IoaW50IGkgPSAwO2k8bTtpKyspewoJCWludCB1LHY7IGNpbj4+dT4+djsgYWRqW3VdLnB1c2hfYmFjayh2KTsKCX0KCXZpcy5yZXNpemUobiArIDEsMCk7Cglsb3dfbGluay5yZXNpemUobiArIDEpOwoJaW90YShsb3dfbGluay5iZWdpbigpLCBsb3dfbGluay5lbmQoKSwwKTsKCWluc3RhY2sucmVzaXplKG4gKyAxLDApOwoJbm9kZV9pZC5yZXNpemUobiArIDEsMCk7CglraW5kb20ucmVzaXplKG4gKyAxKTsKCXRhcmphbigpOwoJdmVjdG9yPGxsPiBmcmVxKHNjYyArIDEsMGxsKTsgCiAgICB2ZWN0b3I8bGw+IG1uKHNjYyArIDEsIDJlOSArIDFsbCk7IAogICAgZm9yKGludCBpID0gMTsgaSA8PW4gOyBpKyspewogICAgICAgbW5ba2luZG9tW2ldXSA9IG1pbihtbltraW5kb21baV1dLCBjb3N0W2ldKTsgCiAgICB9CiAgICBsbCBzdW0gPSAwbGw7IAogICAgZm9yKGludCBpID0gMTsgaSA8PSBzY2MgOyBpKyspIHN1bSArPSBtbltpXTsgCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKyl7CiAgICAgICBpZihjb3N0W2ldID09IG1uW2tpbmRvbVtpXV0pIGZyZXFba2luZG9tW2ldXSsrOyAKICAgIH0KICAgIGxsIGNvdW50ID0gMWxsOyAKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gc2NjOyBpKyspIAogICAgICAgIGNvdW50ID0gKGNvdW50KmZyZXFbaV0pJU07IAogICAgCgljb3V0PDxzdW08PCIgIjw8Y291bnQ8PCdcbic7Cn0=