#include using namespace std; typedef long long ll; // 端点を間違えないように気をつけること! #define FOR(i, m, n) for (ll i = (ll)(m); i <= (ll)(n); i++) #define RFOR(i, m, n) for (ll i = (ll)(m); i >= (ll)(n); i--) // 割り算をするときは自作関数syou,amariを使うこと! // 入力は変数を宣言した直後に入れること! int main() { ll N, M; cin >> N >> M; ll p[M + 1], q[M + 1]; vector yuujin[N + 1]; FOR(i, 1, M) { cin >> p[i] >> q[i]; yuujin[p[i]].push_back(q[i]); yuujin[q[i]].push_back(p[i]); } ll Q; cin >> Q; ll A[Q + 1]; FOR(i, 1, Q) { cin >> A[i]; ll friends = -1; ll mini[N + 1]; FOR(i, 0, N) { mini[i] = -1; } queue que; que.push(A[i]); mini[A[i]] = 0; while (!que.empty()) { ll p = que.front(); que.pop(); friends++; FOR(j, 0, yuujin[p].size() - 1) { if (mini[yuujin[p][j]] == -1) { mini[yuujin[p][j]] = mini[p] + 1; que.push(yuujin[p][j]); } } } ll maxd = 0; FOR(j, 1, N) { maxd = max(maxd, mini[j]); } if (maxd != 0) cout << friends << " " << (ll)ceil(log(maxd) / log(2.0)) << endl; else cout << friends << " " << 0 << endl; } }