#include <bits/stdc++.h>
using namespace std;
int n, x, y, t, l[205], qd[205 + 205], qn[205 + 205], h[205], b1, b2, d1, d2,
    ret;
void build(int x, int y) { qd[++t] = y, qn[t] = l[x], l[x] = t; }
void dfs(int x, int y, int *d) {
  h[x] = 0;
  int mx1 = 0, mx2 = 0;
  for (int i = l[x]; i; i = qn[i]) {
    if (i == b1 || i == b2 || qd[i] == y) continue;
    dfs(qd[i], x, d);
    h[x] = max(h[x], h[qd[i]] + 1);
    if (h[qd[i]] + 1 >= mx1)
      mx2 = mx1, mx1 = h[qd[i]] + 1;
    else if (h[qd[i]] + 1 > mx2)
      mx2 = h[qd[i]] + 1;
  }
  *d = max(*d, mx1 + mx2);
}
int main() {
  scanf("%d", &n);
  t = 1;
  for (int i = 1; i < n; i++) scanf("%d%d", &x, &y), build(x, y), build(y, x);
  ret = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = l[i]; j; j = qn[j]) {
      b1 = j;
      b2 = j ^ 1;
      d1 = d2 = 0;
      dfs(i, -1, &d1);
      dfs(qd[j], -1, &d2);
      ret = max(ret, d1 * d2);
    }
  }
  printf("%d\n", ret);
  return 0;
}
