#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
const long long mod = 1e9 + 7;
const long long p = 1e6 + 123;
const long long z = 315;
long long pws[N], dp[N];
map<long long, int> hmp;
int cnt, a[N], n;
pair<int, int> sol;
vector<int> g[N];
void add(long long x) {
  hmp[x]++;
  if (hmp[x] == 1) cnt++;
}
void del(long long x) {
  hmp[x]--;
  if (hmp[x] == 0) cnt--;
}
long long f(long long x) {
  x = (x + z) % mod;
  x = x ^ (x >> 2);
  return x;
}
void init(int v, int prev = -1) {
  vector<long long> sons;
  for (int xt : g[v]) {
    if (xt == prev) continue;
    init(xt, v);
    sons.push_back(dp[xt]);
  }
  sort(sons.begin(), sons.end());
  for (int i = 0; i < (int)sons.size(); i++)
    dp[v] = (dp[v] * p + sons[i]) % mod;
  dp[v] = f(dp[v]);
  add(dp[v]);
}
void dfs(int v, int prev = -1) {
  vector<pair<long long, int> > sons;
  for (int xt : g[v]) sons.push_back({dp[xt], xt});
  sort(sons.begin(), sons.end());
  long long dpNode = dp[v];
  if (prev != -1) {
    del(dp[v]);
    dp[v] = 0;
    for (int i = 0; i < (int)sons.size(); i++)
      dp[v] = (dp[v] * p + sons[i].first) % mod;
    dp[v] = f(dp[v]);
    add(dp[v]);
    sol = max(sol, {cnt, v});
  }
  vector<long long> pref((int)g[v].size(), 0), suf((int)g[v].size(), 0);
  for (int i = 0; i < (int)sons.size(); i++) {
    if (i) pref[i] = pref[i - 1];
    pref[i] = (pref[i] * p + sons[i].first) % mod;
  }
  for (int i = (int)sons.size() - 1; i >= 0; i--) {
    if (i + 1 < (int)sons.size()) suf[i] = suf[i + 1];
    suf[i] = (suf[i] + sons[i].first * pws[(int)sons.size() - 1 - i]) % mod;
  }
  long long initHash = dp[v];
  for (int i = 0; i < (int)sons.size(); i++) {
    int xt = sons[i].second;
    if (xt == prev) continue;
    long long hsh = 0;
    int shift = (int)sons.size() - 1 - i;
    if (i) hsh = (pref[i - 1] * pws[shift]) % mod;
    if (i + 1 < (int)sons.size()) hsh = (hsh + suf[i + 1]) % mod;
    del(dp[v]);
    dp[v] = hsh;
    dp[v] = f(dp[v]);
    add(dp[v]);
    dfs(xt, v);
    del(dp[v]);
    dp[v] = initHash;
    add(dp[v]);
  }
  del(dp[v]);
  dp[v] = dpNode;
  add(dp[v]);
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i < n; i++) {
    int a, b;
    scanf("%d%d", &a, &b);
    g[a].push_back(b);
    g[b].push_back(a);
  }
  pws[0] = 1;
  for (int i = 1; i <= n; i++) pws[i] = (pws[i - 1] * p) % mod;
  init(1);
  sol = {cnt, 1};
  dfs(1);
  printf("%d", sol.second);
  return 0;
}
