μμ°μ Nκ³Ό Mμ΄ μ£Όμ΄μ‘μ λ, μλ 쑰건μ λ§μ‘±νλ κΈΈμ΄κ° MμΈ μμ΄μ λͺ¨λ ꡬνλ νλ‘κ·Έλ¨μ μμ±νμμ€.
1λΆν° NκΉμ§ μμ°μ μ€μμ μ€λ³΅ μμ΄ Mκ°λ₯Ό κ³ λ₯Έ μμ΄
κ³ λ₯Έ μμ΄μ μ€λ¦μ°¨μμ΄μ΄μΌ νλ€.
첫째 μ€μ μμ°μ Nκ³Ό Mμ΄ μ£Όμ΄μ§λ€. (1 β€ M β€ N β€ 8)
ν μ€μ νλμ© λ¬Έμ μ 쑰건μ λ§μ‘±νλ μμ΄μ μΆλ ₯νλ€. μ€λ³΅λλ μμ΄μ μ¬λ¬ λ² μΆλ ₯νλ©΄ μλλ©°, κ° μμ΄μ 곡백μΌλ‘ ꡬλΆν΄μ μΆλ ₯ν΄μΌ νλ€.
μμ΄μ μ¬μ μμΌλ‘ μ¦κ°νλ μμλ‘ μΆλ ₯ν΄μΌ νλ€.
μμ μ
λ ₯ 1
3 1
μμ μΆλ ₯ 1
1
2
3
μμ μ
λ ₯ 2
4 2
μμ μΆλ ₯ 2
1 2
1 3
1 4
2 3
2 4
3 4
μμ μ
λ ₯ 3
4 4
μμ μΆλ ₯ 3
1 2 3 4
function dfs(N, M, arr) {
if(arr.length === M) return arr.join(" ")
const results = []
for(let i = 1 ; i <= N ; i++) {
if(arr.includes(i)) continue
if(arr.length && i < arr.at(-1)) continue
const res = dfs(N, M, [...arr, i])
if(res.length === 0) continue
results.push(res)
}
return results.join("\n")
}
const [N, M] = require('fs').readFileSync('/dev/stdin').toString().trim().split(" ").map(Number)
const result = dfs(N, M, [])
console.log(result.trim())