#include <bits/stdc++.h>
using namespace std;
vector<int> v[205];
int maxm;
int dep;
int dfs(int x, int pre) {
  int res = 0;
  int d1 = 0, d2 = 0;
  int i, j;
  for (i = 0; i < v[x].size(); i++) {
    if (v[x][i] != pre) {
      res = max(res, dfs(v[x][i], x));
      if (dep > d1) {
        d2 = d1;
        d1 = dep;
      } else {
        d2 = max(dep, d2);
      }
    }
  }
  res = max(res, d1 + d2);
  dep = d1 + 1;
  return res;
}
int main() {
  int n;
  scanf("%d", &n);
  int i, j;
  int t = n - 1;
  while (t--) {
    int a, b;
    scanf("%d%d", &a, &b);
    v[a].push_back(b);
    v[b].push_back(a);
  }
  maxm = 0;
  for (i = 1; i <= n; i++) {
    for (j = 0; j < v[i].size(); j++) {
      int x = i;
      int y = v[i][j];
      maxm = max(maxm, dfs(x, y) * dfs(y, x));
    }
  }
  printf("%d\n", maxm);
  return 0;
}
