using
System;
using
System.Collections.Generic;
class
GFG{
static
int
MAX = 1000000;
static
int
ans = 0;
static
List<
int
> []graph =
new
List<
int
>[100];
static
int
[]weight =
new
int
[100];
static
void
SieveOfEratosthenes(
bool
[]prime,
int
p_size)
{
prime[0] =
false
;
prime[1] =
false
;
for
(
int
p = 2; p * p <= p_size; p++)
{
if
(prime[p])
{
for
(
int
i = p * 2;
i < p_size; i += p)
prime[i] =
false
;
}
}
}
static
int
digitSum(
int
n)
{
int
sum = 0;
while
(n > 0)
{
sum += n % 10;
n = n / 10;
}
return
sum;
}
static
void
dfs(
int
node,
int
parent,
bool
[]prime)
{
int
sum = digitSum(weight[node]);
if
(prime[sum])
ans += 1;
foreach
(
int
to
in
graph[node])
{
if
(to == parent)
continue
;
dfs(to, node, prime);
}
}
public
static
void
Main(String[] args)
{
weight[1] = 144;
weight[2] = 1234;
weight[3] = 21;
weight[4] = 5;
weight[5] = 77;
for
(
int
i = 0; i < graph.Length; i++)
graph[i] =
new
List<
int
>();
graph[1].Add(2);
graph[2].Add(3);
graph[2].Add(4);
graph[1].Add(5);
bool
[]prime =
new
bool
[MAX];
for
(
int
i = 0; i < prime.Length; i++)
prime[i] =
true
;
SieveOfEratosthenes(prime, MAX);
dfs(1, 1, prime);
Console.Write(ans);
}
}