#include <bits/stdc++.h>
using namespace std;
const uint32_t N = 711, M = 1e6;
struct bint {
  vector<uint32_t> a;
  bint(uint32_t x = 0) : a{x} {}
  void operator*=(int x) {
    uint32_t i, c = 0;
    for (i = 0; i < a.size(); ++i) {
      auto t = c + a[i] * x;
      a[i] = t % M;
      c = t / M;
    }
    if (c) a.push_back(c);
  }
  void print() const {
    printf("%u", a.back());
    for (auto i = a.size() - 1; i; --i) {
      string s = to_string(a[i - 1]);
      printf("%s%s", string(6 - s.length(), '0').c_str(), s.c_str());
    }
    puts("");
  }
} ans;
int node_count(int case_id) {
  if (case_id >= 0) return 1 + case_id;
  return 2 - case_id;
}
int reduce(int c0, vector<int> &p, vector<int> &n) {
  if (!c0 && p.empty() && n.size() == 1 && n[0] == -1) return -2;
  if (p.size()) {
    swap(p[0], *min_element(p.begin(), p.end()));
    for (int i = 1; i < p.size(); ++i) ans *= node_count(p[i]);
  }
  if (!c0 && n.empty()) return p.empty() ? 0 : -p[0];
  int root = c0 + 1;
  if (n.empty()) {
    if (p.size()) ans *= node_count(p[0]);
    return root - 1;
  }
  sort(n.begin(), n.end());
  for (int &x : n) x = node_count(x);
  if (root == 1 && n[0] == 3) {
    if (p.size()) {
      for (int i = n.size(); i--;) ans *= 3;
      return -p[0];
    } else {
      for (int i = 1; i < n.size(); ++i) ans *= 3;
      return -2;
    }
  }
  if (p.size()) ans *= node_count(p[0]);
  for (int x : n)
    if (x - 1 <= root)
      ans *= x;
    else {
      ++root;
      ans *= x - 1;
    }
  return root - 1;
}
vector<int> e[N];
int dfs(int v, int fa) {
  vector<int> cp, cn;
  int c0 = 0;
  for (int i : e[v])
    if (i != fa) {
      int t = dfs(i, v);
      if (t == 0)
        ++c0;
      else if (t > 0)
        cp.push_back(t);
      else
        cn.push_back(t);
    }
  return reduce(c0, cp, cn);
}
int main() {
  int n, x, y;
  scanf("%d", &n);
  for (int i = 1; i < n; ++i) {
    scanf("%d%d", &x, &y);
    e[x].push_back(y);
    e[y].push_back(x);
  }
  ans = 1;
  int root = dfs(1, 0);
  ans *= node_count(root);
  ans.print();
  return 0;
}
