Given an integer **N**, the task is to find a permutation of the integers from **1** to **N** such that is maximum.

**Examples:**

Input:N = 3Output:3 1 2

Sum of the remainder values is (0 + 1 + 2) = 3

which is the maximum possible.

Input:N = 5Output:5 1 2 3 4

**Approach:** As it is known that the maximum value of a number **X** after doing the **mod** with **Y** is **Y-1**. The permutation that will yield the maximum sum of the mosulus values will be **{N, 1, 2, 3, …., N – 1}**.

After evaluating the expression on the above array the output array will be **{0, 1, 2, 3, …., N – 1}** and this is the maximum value that can be obtained.

Below is the implementation of the above approach:

## C++

`// C++ implementation of the approach` `#include <bits/stdc++.h>` `using` `namespace` `std;` ` ` `// Function to find the permutation` `vector<` `int` `> Findpermutation(` `int` `n)` `{` ` ` `vector<` `int` `> a(n + 1);` ` ` ` ` `// Put n at the first index 1` ` ` `a[1] = n;` ` ` ` ` `// Put all the numbers from` ` ` `// 2 to n sequentially` ` ` `for` `(` `int` `i = 2; i <= n; i++)` ` ` `a[i] = i - 1;` ` ` ` ` `return` `a;` `}` ` ` `// Driver code` `int` `main()` `{` ` ` `int` `n = 8;` ` ` ` ` `vector<` `int` `> v = Findpermutation(n);` ` ` ` ` `// Display the permutation` ` ` `for` `(` `int` `i = 1; i <= n; i++)` ` ` `cout << v[i] << ` `' '` `;` ` ` ` ` `return` `0;` `}` |

## Java

`// Java implementation of the approach` `import` `java.util.*;` `class` `GFG ` `{` ` ` `// Function to find the permutation` `static` `int` `[] Findpermutation(` `int` `n)` `{` ` ` `int` `[] a = ` `new` `int` `[n + ` `1` `];` ` ` ` ` `// Put n at the first index 1` ` ` `a[` `1` `] = n;` ` ` ` ` `// Put all the numbers from` ` ` `// 2 to n sequentially` ` ` `for` `(` `int` `i = ` `2` `; i <= n; i++)` ` ` `a[i] = i - ` `1` `;` ` ` ` ` `return` `a;` `}` ` ` `// Driver code` `public` `static` `void` `main(String[] args) ` `{` ` ` `int` `n = ` `8` `;` ` ` ` ` `int` `[]v = Findpermutation(n);` ` ` ` ` `// Display the permutation` ` ` `for` `(` `int` `i = ` `1` `; i <= n; i++)` ` ` `System.out.print(v[i] + ` `" "` `);` `}` `} ` ` ` `// This code is contributed by 29AjayKumar` |

## Python3

`# Python3 implementation of the approach ` ` ` `# Function to find the permutation ` `def` `Findpermutation(n) :` ` ` ` ` `a ` `=` `[` `0` `] ` `*` `(n ` `+` `1` `); ` ` ` ` ` `# Put n at the first index 1 ` ` ` `a[` `1` `] ` `=` `n; ` ` ` ` ` `# Put all the numbers from ` ` ` `# 2 to n sequentially ` ` ` `for` `i ` `in` `range` `(` `2` `, n ` `+` `1` `) :` ` ` `a[i] ` `=` `i ` `-` `1` `; ` ` ` ` ` `return` `a; ` ` ` `# Driver code ` `if` `__name__ ` `=` `=` `"__main__"` `: ` ` ` ` ` `n ` `=` `8` `; ` ` ` ` ` `v ` `=` `Findpermutation(n); ` ` ` ` ` `# Display the permutation ` ` ` `for` `i ` `in` `range` `(` `1` `, n ` `+` `1` `) :` ` ` `print` `(v[i], end ` `=` `' '` `); ` ` ` `# This code is contributed by AnkitRai01` |

## C#

`// C# implementation of the approach` `using` `System;` ` ` `class` `GFG ` `{` ` ` `// Function to find the permutation` `static` `int` `[] Findpermutation(` `int` `n)` `{` ` ` `int` `[] a = ` `new` `int` `[n + 1];` ` ` ` ` `// Put n at the first index 1` ` ` `a[1] = n;` ` ` ` ` `// Put all the numbers from` ` ` `// 2 to n sequentially` ` ` `for` `(` `int` `i = 2; i <= n; i++)` ` ` `a[i] = i - 1;` ` ` ` ` `return` `a;` `}` ` ` `// Driver code` `public` `static` `void` `Main(String[] args) ` `{` ` ` `int` `n = 8;` ` ` ` ` `int` `[]v = Findpermutation(n);` ` ` ` ` `// Display the permutation` ` ` `for` `(` `int` `i = 1; i <= n; i++)` ` ` `Console.Write(v[i] + ` `" "` `);` `}` `}` ` ` `// This code is contributed by 29AjayKumar` |

**Output:**

8 1 2 3 4 5 6 7

**Time Complexity:** O(N)

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the **Essential Maths for CP Course** at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more, please refer **Complete Interview Preparation Course****.**