using
System;
using
System.Collections;
using
System.Collections.Generic;
class
GFG
{
static
int
recursive_solve(
int
i,
int
j,
int
steps,
int
n,
Dictionary<Tuple<
int
,
int
>,
int
>m)
{
if
(steps == 0 && !m.ContainsKey(
new
Tuple<
int
,
int
>(i, j))) {
m[
new
Tuple<
int
,
int
>(i, j)] = 1;
return
1;
}
int
res = 0;
if
(steps > 0) {
int
[]dx = { -2, -1, 1, 2, -2, -1, 1, 2 };
int
[]dy = { -1, -2, -2, -1, 1, 2, 2, 1 };
for
(
int
k = 0; k < 8; k++) {
if
((dx[k] + i) >= 0
&& (dx[k] + i) <= n - 1
&& (dy[k] + j) >= 0
&& (dy[k] + j) <= n - 1) {
res += recursive_solve(dx[k] + i, dy[k] + j,
steps - 1, n, m);
}
}
}
return
res;
}
static
int
solve(
int
i,
int
j,
int
steps,
int
n)
{
Dictionary<Tuple<
int
,
int
>,
int
> m=
new
Dictionary<Tuple<
int
,
int
>,
int
>();
return
recursive_solve(i, j, steps, n, m);
}
public
static
void
Main(
params
string
[]args)
{
int
i = 0, j = 0, k = 2, n = 10;
Console.Write(solve(i, j, k, n));
}
}