Given two integers **N** and **K**, the task is to find a permutation of first **2*N** natural numbers such that the following equation is satisfied.

**Note:** The value of **K** will always be less than or equal to **N**.

**Examples:**

Input :N = 1, K = 0Output :1 2 The result of the above expression will be: |1-2|-|1-2| =0Input :N = 2, K = 1Output :2 1 3 4 The result of the above expression will be: (|2-1|+|3-4|)-(|2-1+3-4|) = 2

**Approach:**

Consider the sorted permutation:

1, 2, 3, 4, 5, 6....

The result of the expression will come out to be exactly 0. If we swap any 2 indices **2i-1** and **2i**, the result will increase by exactly 2. So we need to make **K** such swaps.

Below is the implementation of the above approach:

## C++

`// C++ program to find the required permutation ` `// of first 2*N natural numbers ` ` ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `// Function to find the required permutation ` `// of first 2*N natural numbers ` `void` `printPermutation(` `int` `n, ` `int` `k) ` `{ ` ` ` `// Iterate in blocks of 2 ` ` ` `for` `(` `int` `i = 1; i <= n; i++) { ` ` ` `int` `x = 2 * i - 1; ` ` ` `int` `y = 2 * i; ` ` ` ` ` `// We need more increments, so print in reverse order ` ` ` `if` `(i <= k) ` ` ` `cout << y << ` `" "` `<< x << ` `" "` `; ` ` ` ` ` `// We have enough increments, so print in same order ` ` ` `else` ` ` `cout << x << ` `" "` `<< y << ` `" "` `; ` ` ` `} ` `} ` ` ` `// Driver Code ` `int` `main() ` `{ ` ` ` `int` `n = 2, k = 1; ` ` ` ` ` `printPermutation(n, k); ` ` ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Python3

`# Python3 program to find the required ` `# permutation of first 2*N natural numbers ` ` ` `# Function to find the required permutation ` `# of first 2*N natural numbers ` `def` `printPermutation(n, k) : ` ` ` ` ` `# Iterate in blocks of 2 ` ` ` `for` `i ` `in` `range` `(` `1` `, n ` `+` `1` `) : ` ` ` `x ` `=` `2` `*` `i ` `-` `1` `; ` ` ` `y ` `=` `2` `*` `i; ` ` ` ` ` `# We need more increments, ` ` ` `# so print in reverse order ` ` ` `if` `(i <` `=` `k) : ` ` ` `print` `(y, x, end ` `=` `" "` `); ` ` ` ` ` `# We have enough increments, ` ` ` `# so print in same order ` ` ` `else` `: ` ` ` `print` `(x, y, end ` `=` `" "` `); ` ` ` `# Driver Code ` `if` `__name__ ` `=` `=` `"__main__"` `: ` ` ` `n ` `=` `2` `; k ` `=` `1` `; ` ` ` ` ` `printPermutation(n, k); ` ` ` `# This code is contributed by Ryuga ` |

*chevron_right*

*filter_none*

**Output:**

2 1 3 4

**Time Complexity:** O(N)

**Auxiliary Space**: O(1)

## Recommended Posts:

- Permutation of numbers such that sum of two consecutive numbers is a perfect square
- Deriving the expression of Fibonacci Numbers in terms of golden ratio
- Find all possible outcomes of a given expression
- Minimum number of prefix reversals to sort permutation of first N numbers
- How to find Lexicographically previous permutation?
- Find a permutation such that number of indices for which gcd(p[i], i) > 1 is exactly K
- Find smallest permutation of given number
- Count permutations that produce positive result
- Minimum positive integer to divide a number such that the result is an odd
- Find permutation of n which is divisible by 3 but not divisible by 6
- Expression Evaluation
- Given two numbers a and b find all x such that a % x = b
- Find two numbers whose sum and GCD are given
- Maximum and Minimum Values of an Algebraic Expression
- Find the sum of first N odd Fibonacci numbers