#include <iostream>
#include <vector>
#include <algorithm>
void permute(std::vector<int>& nums, int start, int end, std::vector<std::vector<int>>& result) {
if (start == end) {
for (int i = 0; i < nums.size(); ++i) {
std::cout << nums[i] << (i < nums.size() - 1 ? " " : "\n");
}
result.push_back(nums);
return;
}
for (int i = start; i <= end; ++i) {
std::swap(nums[start], nums[i]);
permute(nums, start + 1, end, result);
std::swap(nums[start], nums[i]); // backtrack
}
}
int main() {
int n;
std::cin >> n;
std::vector<int> nums(n);
for (int i = 0; i < n; ++i) {
nums[i] = i + 1;
}
std::vector<std::vector<int>> result; // 如果不需要存储结果,可以删除这个变量
permute(nums, 0, n - 1, result); // 如果不需要存储结果,可以删除最后一个参数
return 0;
}
/**************************************************************
Problem: 1308
User: admin
Language: C++
Result: Wrong Answer
****************************************************************/