#include <bits/stdc++.h>
using namespace std;
const int INF = 1 << 30;
const int N = 50;
const pair<long long, long long> d[4] = {{1, 0}, {0, 1}, {0, -1}, {-1, 0}};
int dep[N], deg[N];
vector<int> a[N];
void DFS(int u, int parent) {
  dep[u] = parent < 0 ? 0 : dep[parent] + 1;
  for (auto& v : a[u]) {
    if (v == parent) continue;
    DFS(v, u);
  }
}
int maxdep;
pair<long long, long long> ret[N];
void solve(int u, int parent, int up) {
  int idx = 0;
  for (auto& v : a[u]) {
    if (v == parent) continue;
    long long len = 1LL << (maxdep - dep[u] - 1);
    if (idx == 3 - up) ++idx;
    ret[v] = {ret[u].first + len * d[idx].first,
              ret[u].second + len * d[idx].second};
    solve(v, u, idx);
    ++idx;
  }
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i < n; ++i) {
    int x, y;
    scanf("%d%d", &x, &y);
    --x;
    --y;
    a[x].push_back(y);
    a[y].push_back(x);
    ++deg[x];
    ++deg[y];
  }
  if (*max_element(deg, deg + n) > 4) {
    puts("NO");
    return 0;
  }
  DFS(0, -1);
  maxdep = *max_element(dep, dep + n);
  ret[0] = {0, 0};
  solve(0, -1, -1);
  puts("YES");
  for (int i = 0; i < n; ++i) {
    printf("%I64d %I64d\n", ret[i].first, ret[i].second);
  }
  return 0;
}
