#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
//class Solution {
//public:
vector<vector<int> > permute(vector<int>& num) {
sort(num.begin(), num.end());
vector<vector<int>> res;
do {
res.push_back(num);
} while (next_permutation(num.begin(), num.end()));
res.erase(unique(res.begin(), res.end()),res.end());
return res;
}
int main() {
int n;
cin >> n;
vector<int> num;
int temp;
for (int i = 0; i < n; i++) {
cin >> temp;
num.push_back(temp);
}
vector<vector<int>> end = permute(num);
for (int i = 0; i < end.size(); i++) {
for (int j = 0; j < n; j++) {
cout << end[i][j] << ',';
}
cout << ' ';
}
return 1;
/*vector<int> num;
int temp;
while (cin >> temp) {
num.push_back(temp);
if (cin.get() == '\n')
break;
}
vector<vector<int>> end = permute(num);
int i = 0;
while (!end.empty()) {
for (int j = 0; j < end[i].size(); j++) {
cout << end[i][j] << ',';
}
i++;
cout << ' ';
}
return 1;*/
}
//};
#include <algorithm>
#include <vector>
using namespace std;
//class Solution {
//public:
vector<vector<int> > permute(vector<int>& num) {
sort(num.begin(), num.end());
vector<vector<int>> res;
do {
res.push_back(num);
} while (next_permutation(num.begin(), num.end()));
res.erase(unique(res.begin(), res.end()),res.end());
return res;
}
int main() {
int n;
cin >> n;
vector<int> num;
int temp;
for (int i = 0; i < n; i++) {
cin >> temp;
num.push_back(temp);
}
vector<vector<int>> end = permute(num);
for (int i = 0; i < end.size(); i++) {
for (int j = 0; j < n; j++) {
cout << end[i][j] << ',';
}
cout << ' ';
}
return 1;
/*vector<int> num;
int temp;
while (cin >> temp) {
num.push_back(temp);
if (cin.get() == '\n')
break;
}
vector<vector<int>> end = permute(num);
int i = 0;
while (!end.empty()) {
for (int j = 0; j < end[i].size(); j++) {
cout << end[i][j] << ',';
}
i++;
cout << ' ';
}
return 1;*/
}
//};