<p>The set <code>[1, 2, 3, ...,&nbsp;n]</code> contains a total of <code>n!</code> unique permutations.</p>

<p>By listing and labeling all of the permutations in order, we get the following sequence for <code>n = 3</code>:</p>

<ol>
	<li><code>&quot;123&quot;</code></li>
	<li><code>&quot;132&quot;</code></li>
	<li><code>&quot;213&quot;</code></li>
	<li><code>&quot;231&quot;</code></li>
	<li><code>&quot;312&quot;</code></li>
	<li><code>&quot;321&quot;</code></li>
</ol>

<p>Given <code>n</code> and <code>k</code>, return the <code>k<sup>th</sup></code> permutation sequence.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>
<pre><strong>Input:</strong> n = 3, k = 3
<strong>Output:</strong> "213"
</pre><p><strong class="example">Example 2:</strong></p>
<pre><strong>Input:</strong> n = 4, k = 9
<strong>Output:</strong> "2314"
</pre><p><strong class="example">Example 3:</strong></p>
<pre><strong>Input:</strong> n = 3, k = 1
<strong>Output:</strong> "123"
</pre>
<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>1 &lt;= n &lt;= 9</code></li>
	<li><code>1 &lt;= k &lt;= n!</code></li>
</ul>

#define ll long long
class Solution {
public:
void fun(int n , vector<int> &pq, string &s, int k ) {
    // cout<<n<<" "<<k<<"\n";
    if(n == 1) {
        s = s + to_string(pq[0]);
        ans = s;
        return ;
    }
    if( k <= 1) {
        for(auto x: pq) s+= to_string(x);
        ans = s; return ;
    }
    ll fact  = 1;
    for(int i =1 ;i<n;i++) fact = fact * i;
    sort(pq.begin(), pq.end());
    ll sum =0; ll Y = fact;
    for(auto x: pq) {
        if(fact >=k) {
            s = s + to_string(x);
            vector<int> v ;
            for(auto xx: pq) if(xx !=x ) v.push_back(xx);
            fun(n-1, v, s , k - sum);
            break;
        } 
        sum+= Y;
        fact += Y;
    }

    
}
    string getPermutation(int n, int k) {
        if(n == 1) return "1";
        if(n == 2) {
            if(k == 1) return "12";
            else return "21";
        }
        string s ="";
        vector<int> pq;
        for(int i =1 ; i<= n ;i++) pq.push_back(i);
        fun(n, pq, s, k);
        return ans;
    }
    string ans;
};
9200