#include <bits/stdc++.h>
using namespace std;
set<int> adj[250];
pair<int, int> best;
void dfs(int a, int p, int l) {
  best = max(best, {l, a});
  for (int b : adj[a])
    if (b != p) dfs(b, a, l + 1);
}
int diameter(int a) {
  best = {-1, -1};
  dfs(a, -1, 0);
  a = best.second;
  dfs(a, -1, 0);
  return best.first;
}
void solve() {
  int n;
  cin >> n;
  vector<pair<int, int>> edg;
  for (int i = 0; i < n - 1; i++) {
    int a, b;
    cin >> a >> b;
    adj[a].insert(b);
    adj[b].insert(a);
    edg.push_back({a, b});
  }
  int ans = 0;
  for (auto p : edg) {
    int a = p.first, b = p.second;
    adj[a].erase(b);
    adj[b].erase(a);
    int da = diameter(a);
    int db = diameter(b);
    adj[a].insert(b);
    adj[b].insert(a);
    if (ans < da * db) ans = da * db;
  }
  cout << ans << '\n';
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  solve();
  return 0;
}
