#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
const int N = 9;
void show_me_the_answer(vector<int>& candidates) {
int num1 = candidates[0] * 100 + candidates[1] * 10 + candidates[2];
int num2 = candidates[3] * 100 + candidates[4] * 10 + candidates[5];
int num3 = candidates[6] * 100 + candidates[7] * 10 + candidates[8];
if (num1 * 2 == num2 && num1 * 3 == num3)
cout << num1 << ' ' << num2 << ' ' << num3 << endl;
}
void backtracking(vector<int>& nums, vector<int>& candidates, vector<int>& used) {
if (candidates.size() == nums.size()) {
show_me_the_answer(candidates);
return;
}
for (int i = 0; i < nums.size(); ++i) {
if (used[i]) continue;
used[i] = 1;
candidates.emplace_back(nums[i]);
backtracking(nums, candidates, used);
candidates.pop_back();
used[i] = 0;
}
}
int main(int argc, char const *argv[]) {
vector<int> nums(N), used(N), candidates;
iota(begin(nums), end(nums), 1);
backtracking(nums, candidates, used);
return 0;
}