#include <bits/stdc++.h>
using namespace std;
#define maxn 200005
#define LOG 20
int n,m,q;
vector<pair<int,int>> g[maxn];
int U[maxn], V[maxn];
// Tarjan
int dfn[maxn], low[maxn], timer;
bool isBridge[maxn];
vector<int> st;
// block-cut tree
vector<int> bc[maxn*2];
int id; // total node in bc tree
// mark visited in bcc
int seen[maxn], stamp;
// ---------- Tarjan DFS ----------
void dfs(int u, int pEdge){
dfn[u] = low[u] = ++timer;
for(auto [v, idEdge] : g[u]){
if(idEdge == pEdge) continue;
if(!dfn[v]){
st.push_back(idEdge);
dfs(v, idEdge);
low[u] = min(low[u], low[v]);
// bridge
if(low[v] > dfn[u]) isBridge[idEdge] = 1;
// build bcc
if(low[v] >= dfn[u]){
int node = ++id;
stamp++;
while(true){
int e = st.back(); st.pop_back();
int a = U[e], b = V[e];
if(seen[a] != stamp){
seen[a] = stamp;
bc[a].push_back(node);
bc[node].push_back(a);
}
if(seen[b] != stamp){
seen[b] = stamp;
bc[b].push_back(node);
bc[node].push_back(b);
}
if(e == idEdge) break;
}
}
}
else if(dfn[v] < dfn[u]){
st.push_back(idEdge);
low[u] = min(low[u], dfn[v]);
}
}
}
// ---------- LCA ----------
int up[maxn*2][LOG], depth[maxn*2], val[maxn*2];
void dfs_lca(int u, int p){
for(int v: bc[u]){
if(v == p) continue;
depth[v] = depth[u] + 1;
up[v][0] = u;
val[v] += val[u];
dfs_lca(v,u);
}
}
int lca(int u, int v){
if(depth[u] < depth[v]) swap(u,v);
int k = depth[u] - depth[v];
for(int i=0;i<LOG;i++)
if(k>>i&1) u = up[u][i];
if(u==v) return u;
for(int i=LOG-1;i>=0;i--){
if(up[u][i] != up[v][i]){
u = up[u][i];
v = up[v][i];
}
}
return up[u][0];
}
// ---------- DSU for bridge tree ----------
int par[maxn];
int find(int u){
return par[u]==u ? u : par[u]=find(par[u]);
}
void unite(int u,int v){
u=find(u); v=find(v);
if(u!=v) par[v]=u;
}
vector<int> tree[maxn];
int dep2[maxn], up2[maxn][LOG];
void dfs2(int u, int p){
for(int v: tree[u]){
if(v==p) continue;
dep2[v] = dep2[u] + 1;
up2[v][0] = u;
dfs2(v,u);
}
}
int lca2(int u,int v){
if(dep2[u] < dep2[v]) swap(u,v);
int k = dep2[u]-dep2[v];
for(int i=0;i<LOG;i++)
if(k>>i&1) u=up2[u][i];
if(u==v) return u;
for(int i=LOG-1;i>=0;i--){
if(up2[u][i]!=up2[v][i]){
u=up2[u][i];
v=up2[v][i];
}
}
return up2[u][0];
}
// ---------- MAIN ----------
int main(){
ios::sync_with_stdio(0); cin.tie(0);
cin>>n>>m>>q;
for(int i=1;i<=m;i++){
cin>>U[i]>>V[i];
g[U[i]].push_back({V[i],i});
g[V[i]].push_back({U[i],i});
}
id = n;
dfs(1,0);
// ----- prepare block-cut tree -----
for(int i=1;i<=n;i++) val[i]=1; // chỉ tính node gốc
dfs_lca(1,0);
for(int j=1;j<LOG;j++)
for(int i=1;i<=id;i++)
up[i][j]=up[ up[i][j-1] ][j-1];
// ----- build bridge tree -----
for(int i=1;i<=n;i++) par[i]=i;
for(int i=1;i<=m;i++){
if(!isBridge[i])
unite(U[i],V[i]);
}
map<int,int> mp;
int cnt=0;
for(int i=1;i<=n;i++){
int r = find(i);
if(!mp[r]) mp[r]=++cnt;
}
for(int i=1;i<=m;i++){
if(isBridge[i]){
int a = mp[find(U[i])];
int b = mp[find(V[i])];
tree[a].push_back(b);
tree[b].push_back(a);
}
}
dfs2(1,0);
for(int j=1;j<LOG;j++)
for(int i=1;i<=cnt;i++)
up2[i][j]=up2[ up2[i][j-1] ][j-1];
// ----- queries -----
while(q--){
int s,t;
cin>>s>>t;
// vertex
int L = lca(s,t);
int ansV = val[s] + val[t] - 2*val[L] + 1;
// edge
int a = mp[find(s)];
int b = mp[find(t)];
int L2 = lca2(a,b);
int ansE = dep2[a] + dep2[b] - 2*dep2[L2];
cout<<ansV<<" "<<ansE<<"\n";
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIG1heG4gMjAwMDA1CiNkZWZpbmUgTE9HIDIwCgppbnQgbixtLHE7CnZlY3RvcjxwYWlyPGludCxpbnQ+PiBnW21heG5dOwoKaW50IFVbbWF4bl0sIFZbbWF4bl07CgovLyBUYXJqYW4KaW50IGRmblttYXhuXSwgbG93W21heG5dLCB0aW1lcjsKYm9vbCBpc0JyaWRnZVttYXhuXTsKdmVjdG9yPGludD4gc3Q7CgovLyBibG9jay1jdXQgdHJlZQp2ZWN0b3I8aW50PiBiY1ttYXhuKjJdOwppbnQgaWQ7IC8vIHRvdGFsIG5vZGUgaW4gYmMgdHJlZQoKLy8gbWFyayB2aXNpdGVkIGluIGJjYwppbnQgc2VlblttYXhuXSwgc3RhbXA7CgovLyAtLS0tLS0tLS0tIFRhcmphbiBERlMgLS0tLS0tLS0tLQp2b2lkIGRmcyhpbnQgdSwgaW50IHBFZGdlKXsKICAgIGRmblt1XSA9IGxvd1t1XSA9ICsrdGltZXI7CgogICAgZm9yKGF1dG8gW3YsIGlkRWRnZV0gOiBnW3VdKXsKICAgICAgICBpZihpZEVkZ2UgPT0gcEVkZ2UpIGNvbnRpbnVlOwoKICAgICAgICBpZighZGZuW3ZdKXsKICAgICAgICAgICAgc3QucHVzaF9iYWNrKGlkRWRnZSk7CiAgICAgICAgICAgIGRmcyh2LCBpZEVkZ2UpOwogICAgICAgICAgICBsb3dbdV0gPSBtaW4obG93W3VdLCBsb3dbdl0pOwoKICAgICAgICAgICAgLy8gYnJpZGdlCiAgICAgICAgICAgIGlmKGxvd1t2XSA+IGRmblt1XSkgaXNCcmlkZ2VbaWRFZGdlXSA9IDE7CgogICAgICAgICAgICAvLyBidWlsZCBiY2MKICAgICAgICAgICAgaWYobG93W3ZdID49IGRmblt1XSl7CiAgICAgICAgICAgICAgICBpbnQgbm9kZSA9ICsraWQ7CgogICAgICAgICAgICAgICAgc3RhbXArKzsKICAgICAgICAgICAgICAgIHdoaWxlKHRydWUpewogICAgICAgICAgICAgICAgICAgIGludCBlID0gc3QuYmFjaygpOyBzdC5wb3BfYmFjaygpOwogICAgICAgICAgICAgICAgICAgIGludCBhID0gVVtlXSwgYiA9IFZbZV07CgogICAgICAgICAgICAgICAgICAgIGlmKHNlZW5bYV0gIT0gc3RhbXApewogICAgICAgICAgICAgICAgICAgICAgICBzZWVuW2FdID0gc3RhbXA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJjW2FdLnB1c2hfYmFjayhub2RlKTsKICAgICAgICAgICAgICAgICAgICAgICAgYmNbbm9kZV0ucHVzaF9iYWNrKGEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZihzZWVuW2JdICE9IHN0YW1wKXsKICAgICAgICAgICAgICAgICAgICAgICAgc2VlbltiXSA9IHN0YW1wOwogICAgICAgICAgICAgICAgICAgICAgICBiY1tiXS5wdXNoX2JhY2sobm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJjW25vZGVdLnB1c2hfYmFjayhiKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmKGUgPT0gaWRFZGdlKSBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmKGRmblt2XSA8IGRmblt1XSl7CiAgICAgICAgICAgIHN0LnB1c2hfYmFjayhpZEVkZ2UpOwogICAgICAgICAgICBsb3dbdV0gPSBtaW4obG93W3VdLCBkZm5bdl0pOwogICAgICAgIH0KICAgIH0KfQoKLy8gLS0tLS0tLS0tLSBMQ0EgLS0tLS0tLS0tLQppbnQgdXBbbWF4bioyXVtMT0ddLCBkZXB0aFttYXhuKjJdLCB2YWxbbWF4bioyXTsKCnZvaWQgZGZzX2xjYShpbnQgdSwgaW50IHApewogICAgZm9yKGludCB2OiBiY1t1XSl7CiAgICAgICAgaWYodiA9PSBwKSBjb250aW51ZTsKICAgICAgICBkZXB0aFt2XSA9IGRlcHRoW3VdICsgMTsKICAgICAgICB1cFt2XVswXSA9IHU7CiAgICAgICAgdmFsW3ZdICs9IHZhbFt1XTsKICAgICAgICBkZnNfbGNhKHYsdSk7CiAgICB9Cn0KCmludCBsY2EoaW50IHUsIGludCB2KXsKICAgIGlmKGRlcHRoW3VdIDwgZGVwdGhbdl0pIHN3YXAodSx2KTsKCiAgICBpbnQgayA9IGRlcHRoW3VdIC0gZGVwdGhbdl07CiAgICBmb3IoaW50IGk9MDtpPExPRztpKyspCiAgICAgICAgaWYoaz4+aSYxKSB1ID0gdXBbdV1baV07CgogICAgaWYodT09dikgcmV0dXJuIHU7CgogICAgZm9yKGludCBpPUxPRy0xO2k+PTA7aS0tKXsKICAgICAgICBpZih1cFt1XVtpXSAhPSB1cFt2XVtpXSl7CiAgICAgICAgICAgIHUgPSB1cFt1XVtpXTsKICAgICAgICAgICAgdiA9IHVwW3ZdW2ldOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiB1cFt1XVswXTsKfQoKLy8gLS0tLS0tLS0tLSBEU1UgZm9yIGJyaWRnZSB0cmVlIC0tLS0tLS0tLS0KaW50IHBhclttYXhuXTsKCmludCBmaW5kKGludCB1KXsKICAgIHJldHVybiBwYXJbdV09PXUgPyB1IDogcGFyW3VdPWZpbmQocGFyW3VdKTsKfQoKdm9pZCB1bml0ZShpbnQgdSxpbnQgdil7CiAgICB1PWZpbmQodSk7IHY9ZmluZCh2KTsKICAgIGlmKHUhPXYpIHBhclt2XT11Owp9Cgp2ZWN0b3I8aW50PiB0cmVlW21heG5dOwppbnQgZGVwMlttYXhuXSwgdXAyW21heG5dW0xPR107Cgp2b2lkIGRmczIoaW50IHUsIGludCBwKXsKICAgIGZvcihpbnQgdjogdHJlZVt1XSl7CiAgICAgICAgaWYodj09cCkgY29udGludWU7CiAgICAgICAgZGVwMlt2XSA9IGRlcDJbdV0gKyAxOwogICAgICAgIHVwMlt2XVswXSA9IHU7CiAgICAgICAgZGZzMih2LHUpOwogICAgfQp9CgppbnQgbGNhMihpbnQgdSxpbnQgdil7CiAgICBpZihkZXAyW3VdIDwgZGVwMlt2XSkgc3dhcCh1LHYpOwoKICAgIGludCBrID0gZGVwMlt1XS1kZXAyW3ZdOwogICAgZm9yKGludCBpPTA7aTxMT0c7aSsrKQogICAgICAgIGlmKGs+PmkmMSkgdT11cDJbdV1baV07CgogICAgaWYodT09dikgcmV0dXJuIHU7CgogICAgZm9yKGludCBpPUxPRy0xO2k+PTA7aS0tKXsKICAgICAgICBpZih1cDJbdV1baV0hPXVwMlt2XVtpXSl7CiAgICAgICAgICAgIHU9dXAyW3VdW2ldOwogICAgICAgICAgICB2PXVwMlt2XVtpXTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdXAyW3VdWzBdOwp9CgovLyAtLS0tLS0tLS0tIE1BSU4gLS0tLS0tLS0tLQppbnQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7CgogICAgY2luPj5uPj5tPj5xOwoKICAgIGZvcihpbnQgaT0xO2k8PW07aSsrKXsKICAgICAgICBjaW4+PlVbaV0+PlZbaV07CiAgICAgICAgZ1tVW2ldXS5wdXNoX2JhY2soe1ZbaV0saX0pOwogICAgICAgIGdbVltpXV0ucHVzaF9iYWNrKHtVW2ldLGl9KTsKICAgIH0KCiAgICBpZCA9IG47CgogICAgZGZzKDEsMCk7CgogICAgLy8gLS0tLS0gcHJlcGFyZSBibG9jay1jdXQgdHJlZSAtLS0tLQogICAgZm9yKGludCBpPTE7aTw9bjtpKyspIHZhbFtpXT0xOyAvLyBjaOG7iSB0w61uaCBub2RlIGfhu5FjCgogICAgZGZzX2xjYSgxLDApOwoKICAgIGZvcihpbnQgaj0xO2o8TE9HO2orKykKICAgICAgICBmb3IoaW50IGk9MTtpPD1pZDtpKyspCiAgICAgICAgICAgIHVwW2ldW2pdPXVwWyB1cFtpXVtqLTFdIF1bai0xXTsKCiAgICAvLyAtLS0tLSBidWlsZCBicmlkZ2UgdHJlZSAtLS0tLQogICAgZm9yKGludCBpPTE7aTw9bjtpKyspIHBhcltpXT1pOwoKICAgIGZvcihpbnQgaT0xO2k8PW07aSsrKXsKICAgICAgICBpZighaXNCcmlkZ2VbaV0pCiAgICAgICAgICAgIHVuaXRlKFVbaV0sVltpXSk7CiAgICB9CgogICAgbWFwPGludCxpbnQ+IG1wOwogICAgaW50IGNudD0wOwoKICAgIGZvcihpbnQgaT0xO2k8PW47aSsrKXsKICAgICAgICBpbnQgciA9IGZpbmQoaSk7CiAgICAgICAgaWYoIW1wW3JdKSBtcFtyXT0rK2NudDsKICAgIH0KCiAgICBmb3IoaW50IGk9MTtpPD1tO2krKyl7CiAgICAgICAgaWYoaXNCcmlkZ2VbaV0pewogICAgICAgICAgICBpbnQgYSA9IG1wW2ZpbmQoVVtpXSldOwogICAgICAgICAgICBpbnQgYiA9IG1wW2ZpbmQoVltpXSldOwogICAgICAgICAgICB0cmVlW2FdLnB1c2hfYmFjayhiKTsKICAgICAgICAgICAgdHJlZVtiXS5wdXNoX2JhY2soYSk7CiAgICAgICAgfQogICAgfQoKICAgIGRmczIoMSwwKTsKCiAgICBmb3IoaW50IGo9MTtqPExPRztqKyspCiAgICAgICAgZm9yKGludCBpPTE7aTw9Y250O2krKykKICAgICAgICAgICAgdXAyW2ldW2pdPXVwMlsgdXAyW2ldW2otMV0gXVtqLTFdOwoKICAgIC8vIC0tLS0tIHF1ZXJpZXMgLS0tLS0KICAgIHdoaWxlKHEtLSl7CiAgICAgICAgaW50IHMsdDsKICAgICAgICBjaW4+PnM+PnQ7CgogICAgICAgIC8vIHZlcnRleAogICAgICAgIGludCBMID0gbGNhKHMsdCk7CiAgICAgICAgaW50IGFuc1YgPSB2YWxbc10gKyB2YWxbdF0gLSAyKnZhbFtMXSArIDE7CgogICAgICAgIC8vIGVkZ2UKICAgICAgICBpbnQgYSA9IG1wW2ZpbmQocyldOwogICAgICAgIGludCBiID0gbXBbZmluZCh0KV07CiAgICAgICAgaW50IEwyID0gbGNhMihhLGIpOwogICAgICAgIGludCBhbnNFID0gZGVwMlthXSArIGRlcDJbYl0gLSAyKmRlcDJbTDJdOwoKICAgICAgICBjb3V0PDxhbnNWPDwiICI8PGFuc0U8PCJcbiI7CiAgICB9Cn0=