using
System;
using
System.Collections.Generic;
class
GFG{
static
bool
isSubsetSum(List<
int
>
set
,
int
n,
int
sum)
{
bool
[,]subset =
new
bool
[n + 1, sum + 1];
for
(
int
i = 0; i <= n; i++)
subset[i, 0] =
true
;
for
(
int
i = 1; i <= sum; i++)
subset[0, i] =
false
;
for
(
int
i = 1; i <= n; i++)
{
for
(
int
j = 1; j <= sum; j++)
{
if
(j <
set
[i - 1])
subset[i, j] = subset[i - 1, j];
if
(j >=
set
[i - 1])
subset[i, j] = subset[i - 1, j] ||
subset[i - 1,
j -
set
[i - 1]];
}
}
return
subset[n, sum];
}
static
void
storeDivisors(
int
n, List<
int
> div)
{
for
(
int
i = 1; i <= Math.Sqrt(n); i++)
{
if
(n % i == 0)
{
if
(i == (n / i))
div.Add(i);
else
{
div.Add(i);
div.Add(n / i);
}
}
}
}
static
bool
isPractical(
int
N)
{
List<
int
> div =
new
List<
int
>();
storeDivisors(N, div);
for
(
int
i = 1; i < N; i++)
{
if
(!isSubsetSum(div, div.Count, i))
return
false
;
}
return
true
;
}
public
static
void
Main(String[] args)
{
int
N = 18;
if
(isPractical(N) ==
true
)
Console.Write(
"Yes"
);
else
Console.Write(
"No"
);
}
}