#include <vector>
#include <iostream>
using namespace std;
typedef long long ll;
ll comb[55][55];
int num[55];
ll dp[55][55];
class Excavations2{
public:
ll count(vector <int> kind, vector <int> found, int K){
comb[0][0] = 1;
for( int i=1; i<=50; i++ ){
comb[i][0] = comb[i][i] = 1;
for( int j=1; j<i; j++ )
comb[i][j] = comb[i-1][j-1] + comb[i-1][j];
}
for( int i=0; i<kind.size(); i++ ) num[kind[i]]++;
dp[0][K]=1;
for( int i=0; i<found.size(); i++ ){
for( int j=0; j<K; j++ ){
for( int k=j+1; k<=K; k++ ){
if( num[found[i]] < k-j ) break;
dp[i+1][j] += dp[i][k] * comb[num[found[i]]][k-j];
}
//cout << "dp[" << i+1 << "][" << j << "] = " << dp[i+1][j] << endl;
}
}
return dp[found.size()][0];
}
};
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKbGwgY29tYls1NV1bNTVdOwppbnQgbnVtWzU1XTsKbGwgZHBbNTVdWzU1XTsKY2xhc3MgRXhjYXZhdGlvbnMyewpwdWJsaWM6CiAgbGwgY291bnQodmVjdG9yIDxpbnQ+IGtpbmQsIHZlY3RvciA8aW50PiBmb3VuZCwgaW50IEspewogICAgY29tYlswXVswXSA9IDE7CiAgICBmb3IoIGludCBpPTE7IGk8PTUwOyBpKysgKXsKICAgICAgY29tYltpXVswXSA9IGNvbWJbaV1baV0gPSAxOwogICAgICBmb3IoIGludCBqPTE7IGo8aTsgaisrICkKICAgICAgICBjb21iW2ldW2pdID0gY29tYltpLTFdW2otMV0gKyBjb21iW2ktMV1bal07CiAgICB9CiAgICBmb3IoIGludCBpPTA7IGk8a2luZC5zaXplKCk7IGkrKyApIG51bVtraW5kW2ldXSsrOwogICAgZHBbMF1bS109MTsKICAgIGZvciggaW50IGk9MDsgaTxmb3VuZC5zaXplKCk7IGkrKyApewogICAgICBmb3IoIGludCBqPTA7IGo8SzsgaisrICl7CiAgICAgICAgZm9yKCBpbnQgaz1qKzE7IGs8PUs7IGsrKyApewogICAgICAgICAgaWYoIG51bVtmb3VuZFtpXV0gPCBrLWogKSBicmVhazsKICAgICAgICAgIGRwW2krMV1bal0gKz0gZHBbaV1ba10gKiBjb21iW251bVtmb3VuZFtpXV1dW2stal07CiAgICAgICAgfQogICAgICAgIC8vY291dCA8PCAiZHBbIiA8PCBpKzEgPDwgIl1bIiA8PCBqIDw8ICJdID0gIiA8PCBkcFtpKzFdW2pdIDw8IGVuZGw7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiBkcFtmb3VuZC5zaXplKCldWzBdOwogIH0KfTs=