#include <bits/stdc++.h>
using namespace std;
vector<int> path[50];
vector<pair<long, long> > pos(50);
int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, 1, 0, -1};
long long pp = 1;
void dfs(int node, int p, int dir) {
  int d = -1;
  for (int adj : path[node]) {
    if (adj == p) continue;
    d++;
    if (d == dir) d++;
    pos[adj] =
        make_pair(pos[node].first + pp * dx[d], pos[node].second + pp * dy[d]);
    pp /= 2;
    dfs(adj, node, (d + 2) % 4);
    pp *= 2;
  }
}
int main() {
  ios_base::sync_with_stdio(false);
  int N;
  cin >> N;
  for (int i = 1; i < N; i++) {
    int a, b;
    cin >> a >> b;
    path[a].push_back(b);
    path[b].push_back(a);
  }
  for (int i = 1; i <= N; i++) {
    pp *= 2;
    if (path[i].size() > 4) {
      cout << "NO\n";
      return 0;
    }
  }
  pos[1] = make_pair(0, 0);
  dfs(1, 1, -1);
  cout << "YES\n";
  for (int i = 1; i <= N; i++) {
    cout << pos[i].first << " " << pos[i].second << "\n";
  }
  return 0;
}
