#include <iostream>
#include <map>
#include <vector>
#include <boost/multiprecision/cpp_int.hpp>
using namespace std;
using BigInt = boost::multiprecision::cpp_int;
BigInt ithDuplicatedPermutationInv(vector<int> a)
{
int N = a.size();
BigInt i = 1, P = 1;
map<int, int> c;
for (int j = N - 1; j >= 0; j--) {
c[a[j]]++;
int s = 0;
for (auto &x : c) {
if (x.first == a[j]) {
i += P * s / x.second;
P = P * (N - j) / x.second;
break;
}
s += x.second;
}
}
return i;
}
template <typename T> ostream &operator<<(ostream &os, const vector<T> &v)
{
for (auto &x : v) os << (&x == &v[0] ? "[" : ", ") << x;
cout << "]";
return os;
}
const vector<int> nothing = {};
vector<int> Q[] = {
{1, 2, 3, 4, 5, 6, 7, 8, 9},
{1, 2, 3, 4, 5, 6, 7, 9, 8},
{1, 2, 3, 4, 5, 6, 8, 7, 9},
{9, 8, 7, 6, 5, 4, 3, 2, 1},
nothing,
{1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4},
{1, 1, 1, 2, 2, 2, 3, 3, 4, 3, 4, 4},
{1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 3, 4},
{2, 2, 2, 3, 3, 1, 4, 3, 4, 1, 1, 4},
{3, 2, 4, 4, 2, 4, 3, 3, 1, 1, 1, 2},
{4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1},
nothing,
{1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5},
{1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 4, 5, 5},
{1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 4, 5},
{1, 1, 1, 3, 3, 3, 4, 4, 2, 5, 4, 5, 2, 2, 5},
{1, 1, 1, 4, 3, 5, 5, 3, 5, 4, 4, 2, 2, 2, 3},
{1, 1, 1, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2},
{5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1},
nothing,
{1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5,
6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10},
{1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5,
6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 10, 9, 10, 10, 10, 10},
{1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5,
6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 9, 10, 10, 10},
{1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5,
6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 9, 9, 10, 10, 8, 8, 9, 8, 8, 9, 10, 10, 10, 9},
{1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5,
6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 10, 10, 9, 8, 8, 9, 10, 10, 8, 9, 10, 9, 8, 9},
{10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6,
5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1},
nothing,
{3, 1, 4, 1, 5, 9}
};
int main(void)
{
for (auto &q : Q) {
if (q.size()) {
cout << "入力: " << q << endl;
cout << "出力: " << ithDuplicatedPermutationInv(q) << endl;
}
cout << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Ym9vc3QvbXVsdGlwcmVjaXNpb24vY3BwX2ludC5ocHA+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBCaWdJbnQgPSBib29zdDo6bXVsdGlwcmVjaXNpb246OmNwcF9pbnQ7CgpCaWdJbnQgaXRoRHVwbGljYXRlZFBlcm11dGF0aW9uSW52KHZlY3RvcjxpbnQ+IGEpCnsKICAgIGludCBOID0gYS5zaXplKCk7CiAgICBCaWdJbnQgaSA9IDEsIFAgPSAxOwogICAgbWFwPGludCwgaW50PiBjOwoKICAgIGZvciAoaW50IGogPSBOIC0gMTsgaiA+PSAwOyBqLS0pIHsKICAgICAgICBjW2Fbal1dKys7CiAgICAgICAgaW50IHMgPSAwOwogICAgICAgIGZvciAoYXV0byAmeCA6IGMpIHsKICAgICAgICAgICAgaWYgKHguZmlyc3QgPT0gYVtqXSkgewogICAgICAgICAgICAgICAgaSArPSBQICogcyAvIHguc2Vjb25kOwogICAgICAgICAgICAgICAgUCA9IFAgKiAoTiAtIGopIC8geC5zZWNvbmQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBzICs9IHguc2Vjb25kOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gaTsKfQoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IG9zdHJlYW0gJm9wZXJhdG9yPDwob3N0cmVhbSAmb3MsIGNvbnN0IHZlY3RvcjxUPiAmdikKewogICAgZm9yIChhdXRvICZ4IDogdikgb3MgPDwgKCZ4ID09ICZ2WzBdID8gIlsiIDogIiwgIikgPDwgeDsKICAgIGNvdXQgPDwgIl0iOwogICAgcmV0dXJuIG9zOwp9Cgpjb25zdCB2ZWN0b3I8aW50PiBub3RoaW5nID0ge307Cgp2ZWN0b3I8aW50PiBRW10gPSB7CiAgICB7MSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOX0sCiAgICB7MSwgMiwgMywgNCwgNSwgNiwgNywgOSwgOH0sCiAgICB7MSwgMiwgMywgNCwgNSwgNiwgOCwgNywgOX0sCiAgICB7OSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMX0sCiAgICBub3RoaW5nLAogICAgezEsIDEsIDEsIDIsIDIsIDIsIDMsIDMsIDMsIDQsIDQsIDR9LAogICAgezEsIDEsIDEsIDIsIDIsIDIsIDMsIDMsIDQsIDMsIDQsIDR9LAogICAgezEsIDEsIDEsIDIsIDIsIDIsIDMsIDMsIDQsIDQsIDMsIDR9LAogICAgezIsIDIsIDIsIDMsIDMsIDEsIDQsIDMsIDQsIDEsIDEsIDR9LAogICAgezMsIDIsIDQsIDQsIDIsIDQsIDMsIDMsIDEsIDEsIDEsIDJ9LAogICAgezQsIDQsIDQsIDMsIDMsIDMsIDIsIDIsIDIsIDEsIDEsIDF9LAogICAgbm90aGluZywKICAgIHsxLCAxLCAxLCAyLCAyLCAyLCAzLCAzLCAzLCA0LCA0LCA0LCA1LCA1LCA1fSwKICAgIHsxLCAxLCAxLCAyLCAyLCAyLCAzLCAzLCAzLCA0LCA0LCA1LCA0LCA1LCA1fSwKICAgIHsxLCAxLCAxLCAyLCAyLCAyLCAzLCAzLCAzLCA0LCA0LCA1LCA1LCA0LCA1fSwKICAgIHsxLCAxLCAxLCAzLCAzLCAzLCA0LCA0LCAyLCA1LCA0LCA1LCAyLCAyLCA1fSwKICAgIHsxLCAxLCAxLCA0LCAzLCA1LCA1LCAzLCA1LCA0LCA0LCAyLCAyLCAyLCAzfSwKICAgIHsxLCAxLCAxLCA1LCA1LCA1LCA0LCA0LCA0LCAzLCAzLCAzLCAyLCAyLCAyfSwKICAgIHs1LCA1LCA1LCA0LCA0LCA0LCAzLCAzLCAzLCAyLCAyLCAyLCAxLCAxLCAxfSwKICAgIG5vdGhpbmcsCiAgICB7MSwgMSwgMSwgMSwgMSwgMiwgMiwgMiwgMiwgMiwgMywgMywgMywgMywgMywgNCwgNCwgNCwgNCwgNCwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNiwgNiwgNiwgNiwgNiwgNywgNywgNywgNywgNywgOCwgOCwgOCwgOCwgOCwgOSwgOSwgOSwgOSwgOSwgMTAsIDEwLCAxMCwgMTAsIDEwfSwKICAgIHsxLCAxLCAxLCAxLCAxLCAyLCAyLCAyLCAyLCAyLCAzLCAzLCAzLCAzLCAzLCA0LCA0LCA0LCA0LCA0LCA1LCA1LCA1LCA1LCA1LAogICAgIDYsIDYsIDYsIDYsIDYsIDcsIDcsIDcsIDcsIDcsIDgsIDgsIDgsIDgsIDgsIDksIDksIDksIDksIDEwLCA5LCAxMCwgMTAsIDEwLCAxMH0sCiAgICB7MSwgMSwgMSwgMSwgMSwgMiwgMiwgMiwgMiwgMiwgMywgMywgMywgMywgMywgNCwgNCwgNCwgNCwgNCwgNSwgNSwgNSwgNSwgNSwKICAgICA2LCA2LCA2LCA2LCA2LCA3LCA3LCA3LCA3LCA3LCA4LCA4LCA4LCA4LCA4LCA5LCA5LCA5LCA5LCAxMCwgMTAsIDksIDEwLCAxMCwgMTB9LAogICAgezEsIDEsIDEsIDEsIDEsIDIsIDIsIDIsIDIsIDIsIDMsIDMsIDMsIDMsIDMsIDQsIDQsIDQsIDQsIDQsIDUsIDUsIDUsIDUsIDUsCiAgICAgNiwgNiwgNiwgNiwgNiwgNywgNywgNywgNywgNywgOCwgOSwgOSwgMTAsIDEwLCA4LCA4LCA5LCA4LCA4LCA5LCAxMCwgMTAsIDEwLCA5fSwKICAgIHsxLCAxLCAxLCAxLCAxLCAyLCAyLCAyLCAyLCAyLCAzLCAzLCAzLCAzLCAzLCA0LCA0LCA0LCA0LCA0LCA1LCA1LCA1LCA1LCA1LAogICAgIDYsIDYsIDYsIDYsIDYsIDcsIDcsIDcsIDcsIDcsIDgsIDEwLCAxMCwgOSwgOCwgOCwgOSwgMTAsIDEwLCA4LCA5LCAxMCwgOSwgOCwgOX0sCiAgICB7MTAsIDEwLCAxMCwgMTAsIDEwLCA5LCA5LCA5LCA5LCA5LCA4LCA4LCA4LCA4LCA4LCA3LCA3LCA3LCA3LCA3LCA2LCA2LCA2LCA2LCA2LAogICAgIDUsIDUsIDUsIDUsIDUsIDQsIDQsIDQsIDQsIDQsIDMsIDMsIDMsIDMsIDMsIDIsIDIsIDIsIDIsIDIsIDEsIDEsIDEsIDEsIDF9LAogICAgbm90aGluZywKICAgIHszLCAxLCA0LCAxLCA1LCA5fQp9OwoKaW50IG1haW4odm9pZCkKewogICAgZm9yIChhdXRvICZxIDogUSkgewogICAgICAgIGlmIChxLnNpemUoKSkgewogICAgICAgICAgICBjb3V0IDw8ICLlhaXlips6ICIgPDwgcSA8PCBlbmRsOwogICAgICAgICAgICBjb3V0IDw8ICLlh7rlips6ICIgPDwgaXRoRHVwbGljYXRlZFBlcm11dGF0aW9uSW52KHEpIDw8IGVuZGw7CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==
入力: [1, 2, 3, 4, 5, 6, 7, 8, 9]
出力: 1
入力: [1, 2, 3, 4, 5, 6, 7, 9, 8]
出力: 2
入力: [1, 2, 3, 4, 5, 6, 8, 7, 9]
出力: 3
入力: [9, 8, 7, 6, 5, 4, 3, 2, 1]
出力: 362880
入力: [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4]
出力: 1
入力: [1, 1, 1, 2, 2, 2, 3, 3, 4, 3, 4, 4]
出力: 2
入力: [1, 1, 1, 2, 2, 2, 3, 3, 4, 4, 3, 4]
出力: 3
入力: [2, 2, 2, 3, 3, 1, 4, 3, 4, 1, 1, 4]
出力: 123456
入力: [3, 2, 4, 4, 2, 4, 3, 3, 1, 1, 1, 2]
出力: 234567
入力: [4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1]
出力: 369600
入力: [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5]
出力: 1
入力: [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 4, 5, 5]
出力: 2
入力: [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 4, 5]
出力: 3
入力: [1, 1, 1, 3, 3, 3, 4, 4, 2, 5, 4, 5, 2, 2, 5]
出力: 123456
入力: [1, 1, 1, 4, 3, 5, 5, 3, 5, 4, 4, 2, 2, 2, 3]
出力: 234567
入力: [1, 1, 1, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2]
出力: 369600
入力: [5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1]
出力: 168168000
入力: [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10]
出力: 1
入力: [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 10, 9, 10, 10, 10, 10]
出力: 2
入力: [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 10, 10, 9, 10, 10, 10]
出力: 3
入力: [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 9, 9, 10, 10, 8, 8, 9, 8, 8, 9, 10, 10, 10, 9]
出力: 123456
入力: [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 8, 10, 10, 9, 8, 8, 9, 10, 10, 8, 9, 10, 9, 8, 9]
出力: 234567
入力: [10, 10, 10, 10, 10, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1]
出力: 49120458506088132224064306071170476903628800
入力: [3, 1, 4, 1, 5, 9]
出力: 127