using
System;
class
GFG
{
static
int
MAX = 101;
static
int
[,,,] dp =
new
int
[MAX, MAX, MAX, 4];
static
int
countWays(
int
p,
int
q,
int
r,
int
last)
{
if
(p < 0 || q < 0 || r < 0)
return
0;
if
(p == 1 && q == 0 && r == 0 && last == 0)
return
1;
if
(p == 0 && q == 1 && r == 0 && last == 1)
return
1;
if
(p == 0 && q == 0 && r == 1 && last == 2)
return
1;
if
(dp[p, q, r, last] != -1)
return
dp[p, q, r, last];
if
(last == 0)
dp[p, q, r, last] = countWays(p - 1, q, r, 1) +
countWays(p - 1, q, r, 2);
else
if
(last == 1)
dp[p, q, r, last] = countWays(p, q - 1, r, 0) +
countWays(p, q - 1, r, 2);
else
dp[p, q, r, last] = countWays(p, q, r - 1, 0) +
countWays(p, q, r - 1, 1);
return
dp[p, q, r, last];
}
static
int
countUtil(
int
p,
int
q,
int
r)
{
for
(
int
i = 0; i < MAX; i++)
for
(
int
j = 0; j < MAX; j++)
for
(
int
k = 0; k < MAX; k++)
for
(
int
l = 0; l < 4; l++)
dp[i, j, k, l] = -1;
return
countWays(p, q, r, 0) +
countWays(p, q, r, 1) +
countWays(p, q, r, 2);
}
static
void
Main()
{
int
p = 1, q = 1, r = 1;
Console.WriteLine(countUtil(p, q, r));
}
}