Counting permutations
/

## C++, Counting, Math, Mathamatics, Special Numbers

Problem
Editorial
Analytics

You are given two integers $n$ and $m$. You are required to find the number of permutations of $n$ such that for each $i$ the $|a_i - i| ≠ m$ where $|x - y|$ denotes the absolute difference between $x$ and $y$.

Example:

Here, $n = 4$ and $m = 3$, therefore, the valid permutations are $[2\ 4\ 1\ 3]$, $[1\ 3\ 4\ 2]$, and so on. The invalid permutations for the same are $[4\ 1\ 3\ 2]$, $[3\ 2\ 4\ 1]$, and so on.

Note: As the number can be large, print answer modulo $1000000007$.

Input format

The first line contains two integers $n$ and $m$.

Output format

Print one integer denoting the number of permutations that are valid. As the number can be very large, print answer modulo $1000000007$.

Constraints

$2 ≤ n ≤ 1e3\\ 1 ≤ m < n$

SAMPLE INPUT
4 3

SAMPLE OUTPUT
14

Explanation

Valid Permutations:

1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 4 1 3
3 1 2 4
3 1 4 2
3 2 1 4
3 4 1 2

Invalid Permutations

2 3 4 1
2 4 3 1
3 2 4 1
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1

Time Limit: 1.0 sec(s) for each input file.
Memory Limit: 256 MB
Source Limit: 1024 KB

## This Problem was Asked in

Initializing Code Editor...