# Color all boxes in line such that every M consecutive boxes are unique

Given **N** boxes that are kept in a straight line and **M** colors such that **M ≤ N**. The position of the boxes cannot be changed. The task is to find the number of ways to color the boxes such that if any **M** consecutive set of boxes is considered then the color of each box is unique. Since the answer could be large, print the answer modulo 10^{9} + 7.**Example:**

Input:N = 3, M = 2Output:2

If colours are c1 and c2 the only possible

ways are {c1, c2, c1} and {c2, c1, c2}.Input:N = 13, M = 10Output:3628800

**Approach:** The number of ways are independent of **N** and only depends on **M**. First **M** boxes can be coloured with the given **M** colours without repetition then the same pattern can be repeated for the next set of **M** boxes. This can be done for every permutation of the colours. So, the number of ways to color the boxes will be **M!**.

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` `#define MOD 1000000007` `// Function to return (m! % MOD)` `int` `modFact(` `int` `n, ` `int` `m)` `{` ` ` `int` `result = 1;` ` ` `for` `(` `int` `i = 1; i <= m; i++)` ` ` `result = (result * i) % MOD;` ` ` `return` `result;` `}` `// Driver code` `int` `main()` `{` ` ` `int` `n = 3, m = 2;` ` ` `cout << modFact(n, m);` ` ` `return` `0;` `}` |

## Java

`// Java implementation of the above approach` `class` `GFG` `{` ` ` `static` `final` `int` `MOD = ` `1000000007` `;` ` ` ` ` `// Function to return (m! % MOD)` ` ` `static` `int` `modFact(` `int` `n, ` `int` `m)` ` ` `{` ` ` `int` `result = ` `1` `;` ` ` `for` `(` `int` `i = ` `1` `; i <= m; i++)` ` ` `result = (result * i) % MOD;` ` ` ` ` `return` `result;` ` ` `}` ` ` ` ` `// Driver code` ` ` `public` `static` `void` `main (String[] args)` ` ` `{` ` ` `int` `n = ` `3` `, m = ` `2` `;` ` ` ` ` `System.out.println(modFact(n, m));` ` ` `}` `}` `// This code is contributed by AnkitRai01` |

## Python3

`# Python3 implementation of the approach` `MOD ` `=` `1000000007` `# Function to return (m! % MOD)` `def` `modFact(n, m) :` ` ` ` ` `result ` `=` `1` ` ` `for` `i ` `in` `range` `(` `1` `, m ` `+` `1` `) :` ` ` `result ` `=` `(result ` `*` `i) ` `%` `MOD` ` ` `return` `result` `# Driver code` `n ` `=` `3` `m ` `=` `2` `print` `(modFact(n, m))` `# This code is contributed by` `# divyamohan123` |

## C#

`// C# implementation of the above approach` `using` `System;` `class` `GFG` `{` ` ` `const` `int` `MOD = 1000000007;` ` ` ` ` `// Function to return (m! % MOD)` ` ` `static` `int` `modFact(` `int` `n, ` `int` `m)` ` ` `{` ` ` `int` `result = 1;` ` ` `for` `(` `int` `i = 1; i <= m; i++)` ` ` `result = (result * i) % MOD;` ` ` ` ` `return` `result;` ` ` `}` ` ` ` ` `// Driver code` ` ` `public` `static` `void` `Main()` ` ` `{` ` ` `int` `n = 3, m = 2;` ` ` ` ` `Console.WriteLine(modFact(n, m));` ` ` `}` `}` `// This code is contributed by Nidhi_biet` |

## Javascript

`<script>` `// Javascript implementation of the approach` `const MOD = 1000000007;` `// Function to return (m! % MOD)` `function` `modFact(n, m)` `{` ` ` `let result = 1;` ` ` `for` `(let i = 1; i <= m; i++)` ` ` `result = (result * i) % MOD;` ` ` `return` `result;` `}` `// Driver code` ` ` `let n = 3, m = 2;` ` ` `document.write(modFact(n, m));` `</script>` |

**Output:**

2

Time Complexity: O(m)

Auxiliary Space: O(1)