#include <bits/stdc++.h>
using namespace std;
const int mod = 998244353;
const int mod1 = 1e9 + 9;
int pwr(int a, int b) {
  int ans = 1;
  while (b) {
    if (b & 1) ans = (ans * 1LL * a) % mod;
    a = (a * 1LL * a) % mod;
    b >>= 1;
  }
  return ans;
}
int pwr1(int a, int b) {
  int ans = 1;
  while (b) {
    if (b & 1) ans = (ans * 1LL * a) % mod1;
    a = (a * 1LL * a) % mod1;
    b >>= 1;
  }
  return ans;
}
const int N = 1e5 + 5;
vector<int> g[N];
long long h[N], ph[N];
long long h1[N], ph1[N];
const long long P = 89512517;
const long long P1 = 75273453;
const int S1 = 986123;
const int S2 = 127836;
inline int max(int a, int b) { return ((a > b) ? a : b); }
void dfs(int u, int p) {
  h[u] = S1;
  h1[u] = S2;
  for (int v : g[u]) {
    if (v != p) {
      dfs(v, u);
      h[u] = (h[u] * (h[v] ^ P)) % mod;
      h1[u] = (h1[u] * (h1[v] ^ P1)) % mod1;
    }
  }
}
void dfs1(int u, int p) {
  long long val = h[u], val1 = h1[u];
  if (p) {
    val = (val * (ph[u] ^ P)) % mod;
    val1 = (val1 * (ph1[u] ^ P1)) % mod1;
  }
  for (int v : g[u]) {
    if (v != p) {
      ph[v] = (val * pwr((h[v] ^ P) % mod, mod - 2)) % mod;
      ph1[v] = (val1 * pwr1((h1[v] ^ P1) % mod1, mod1 - 2)) % mod1;
      dfs1(v, u);
    }
  }
}
int ans = -1, best = 0;
map<pair<long long, long long>, int> s;
inline void add(pair<long long, long long> a) { s[a]++; }
inline void del(pair<long long, long long> a) {
  s[a]--;
  if (s[a] == 0) s.erase(a);
}
void dfs2(int u, int p) {
  if (ans < (int)s.size()) {
    ans = s.size(), best = u;
  }
  for (int v : g[u]) {
    if (v != p) {
      pair<long long, long long> a = {h[v], h1[v]}, b = {ph[v], ph1[v]};
      del(a);
      add(b);
      dfs2(v, u);
      add(a);
      del(b);
    }
  }
}
int main() {
  ios ::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin >> n;
  for (int i = 1; i < n; i++) {
    int u, v;
    cin >> u >> v;
    g[u].push_back(v);
    g[v].push_back(u);
  }
  int root = 1;
  dfs(root, 0);
  dfs1(root, 0);
  for (int i = 2; i <= n; i++) {
    add({h[i], h1[i]});
  }
  dfs2(root, 0);
  cout << best << '\n';
  return 0;
}
