#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 7, SZ = 3 * 1e8;
const int MODM = 1e9 + 7;
const int N = 1e5 + 1;
long long kek = 0;
vector<int> g[N];
int dep[N];
bool used[N];
pair<int, int> dp[N][2];
void dfs1(int v, int h = 0) {
  used[v] = 1;
  dep[v] = h;
  bool fl = 0;
  for (auto to : g[v]) {
    if (!used[to]) {
      dfs1(to, h + 1);
    } else
      continue;
    fl = 1;
    dp[v][0].first += dp[to][1].first;
    dp[v][0].second += dp[to][1].second + dp[to][1].first;
    dp[v][1].first += dp[to][0].first;
    dp[v][1].second += dp[to][0].second + dp[to][0].first;
  }
  if (!fl) {
    dp[v][0] = {1, 0};
  }
}
void dfs2(int v) {
  used[v] = 1;
  for (auto to : g[v]) {
    if (used[to]) continue;
    kek += (dp[to][0].second) / 2;
    kek += (dp[to][1].second + dp[to][1].first) / 2;
    cout << kek << "-\n";
    dp[v][1].second -= dp[to][0].second + dp[to][0].first;
    dp[v][0].second -= dp[to][1].second + dp[to][1].first;
    dp[v][1].first -= dp[to][0].first;
    dp[v][0].first -= dp[to][1].first;
    dp[v][1].second += dp[to][0].second + dp[to][0].first;
    dp[v][0].second += dp[to][1].second + dp[to][1].first;
    dp[v][1].first += dp[to][0].first;
    dp[v][0].first += dp[to][1].first;
  }
  for (auto to : g[v])
    if (!used[to]) dfs2(to);
}
pair<long long, long long> ans[N];
bool us[N];
vector<int> gg[N];
int dx[] = {0, 1, 0, -1};
int dy[] = {1, 0, -1, 0};
void rec(int v, long long x, long long y, long long len, int last) {
  us[v] = 1;
  ans[v] = {x, y};
  int c = 0;
  if (last == 0) ++c;
  for (auto to : gg[v]) {
    if (us[to]) continue;
    rec(to, x + dx[c] * len / 2, y + dy[c] * len / 2, len / 2, (c + 2) % 4);
    ++c;
    if (c == last) ++c;
    c %= 4;
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  for (int i = 0; i < n - 1; ++i) {
    int a, b;
    cin >> a >> b;
    gg[a].push_back(b);
    gg[b].push_back(a);
    if (gg[a].size() > 4 || gg[b].size() > 4) {
      cout << "NO";
      return 0;
    }
  }
  rec(1, 0, 0, 1ll * 1e18 / 2, -1);
  cout << "YES\n";
  for (int i = 1; i <= n; ++i) {
    cout << ans[i].first << " " << ans[i].second << "\n";
  }
  return 0;
}
