/* package whatever; // don't place package name! */
#include <iostream>
#include <math.h>
#include <stdlib.h>
#include <sstream>
#include <bits/stdc++.h>
#include <string>
#include <string.h>
#include <vector>
#include <sstream>
#include <stdio.h>
#include <time.h>
#include <algorithm>
#include <iterator>
using namespace std;

void dfs(int layer,int time,vector<int> arrangement,bool* visited,vector<int> candidate,vector<vector<int>> path){
    if (layer == time){
        /*for (int i = 0; i < time; i++){
            cout << arrangement[i] << "\t";
        }
        cout << endl;
        */
        path.push_back(arrangement);
        //for(int i=0; i<path.size(); i++) cout << path.at(i) << " ";
        return;
    }
    for (int i = 0; i < time; i++){
        if (visited[i]){
            continue;
        }
        visited[i] = true;
        arrangement[layer] = candidate[i];
        dfs(layer + 1,time,arrangement,visited,candidate,path);
        visited[i] = false;
    }
}

//窮舉
void generate_path(vector<int> candidate,int time){

    vector<vector<int>>path;
    bool visited[time] = {false};
    vector<int> arrangement;
    dfs(0,time,arrangement,visited,candidate,path);
    printvector(path);
    //path.push_back(dfs(0,time,arrangement,visited,candidate));
    //for(int i=0; i<path.size(); i++) cout << path.at(i) << " ";

}

int main()
{
	   vector<int> candidate;
    candidate.push_back(10105);
    candidate.push_back(10732);
    candidate.push_back(10865);
    //vector<vector<int>>path;
    //vector<vector<int>>v;
    generate_path(candidate,3);
}