n = int(input())
f = [[] for _ in range(100)]
for _ in range(n):
p,lc,rc = map(ord,input().split())
f[p].append(lc)
f[p].append(rc)
def preorder(x):
print(chr(x),end='')
for next in f[x]:
if next == 46:
continue
preorder(next)
def inorder(x):
lc,rc = f[x]
if lc != 46:
inorder(lc)
print(chr(x),end='')
if rc != 46:
inorder(rc)
def postorder(x):
for next in f[x]:
if next == 46:
continue
postorder(next)
print(chr(x),end='')
preorder(65)
print()
inorder(65)
print()
postorder(65)
print()
#include<iostream>
#include<algorithm>
using namespace std;
int dp[10001];
int main(){
int t;
cin>>t;
for (int i = 1; i <= 10000; i++)
{
for (int a = 0; a<=i/3; a++)
{
int res1 = i-3*a;
for (int b = 0; b <=res1/2; b++)
{
int res2 = res1-2*b;
dp[i]++;
}
}
}
for (int i = 0; i < t; i++)
{
int input;
cin>>input;
cout<<dp[input]<<'\n';
}
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
int field[1000];
int dp[1100];
int main(){
int input;
cin>>input;
for (int i = 0; i < 1000; i++)
dp[i]=1001;
for (int i = 0; i < input; i++)
cin>>field[i];
dp[0]=0;
for (int i = 0; i < input; i++)
for (int j = 1; j <= field[i]; j++)
dp[i+j]=min(dp[i+j],dp[i]+1);
if(dp[input-1]==1001)
cout<<"-1\n";
else
cout<<dp[input-1]<<'\n';
return 0;
}
#include<iostream>
#include<algorithm>
using namespace std;
int field[1000][1000];
int dp[1000][1000];
int main(){
int row, col;
cin>>row>>col;
for (int i = 0; i < row; i++)
for (int j = 0; j < col; j++)
cin>>field[i][j];
dp[0][0]=field[0][0];
for (int j = 1; j < col; j++)
dp[0][j]=field[0][j]+dp[0][j-1];
for (int i = 1; i < row; i++)
dp[i][0] = field[i][0]+dp[i-1][0];
for (int i = 1; i < row; i++)
for (int j = 1; j < col; j++)
dp[i][j]=max(dp[i-1][j-1],max(dp[i-1][j],dp[i][j-1]))+field[i][j];
cout<<dp[row-1][col-1]<<'\n';
return 0;
}