/*
	© MATTO MATTI 2017
	http://mattomatti.com/pl/a0043
	napisane przy użyciu Visual Studio Community 2015
	2017-07-24 v 1.0
*/

#include <iostream>
#include <vector>

using namespace std;

bool wiekszyRowny(vector<int> &v2, int w) {
	if (v2.size() == 0)
		return true;
	return v2[v2.size() - 1] >= w;
}

void szukajntek(vector<vector<int> > &v, vector<int> &v2, int wartosc, int ile) {
	if (wartosc <= 0)
		return;
	for (int i = 1; i <= wartosc; i++) {
		if (find(v2.begin(), v2.end(), i) == v2.end() && wiekszyRowny(v2, i)) {
			v2.push_back(i);
			if (v2.size() == ile && wartosc == i) {
				vector<int> t;
				for (int j = 0; j < ile; j++)
					t.push_back(v2[j]);
				v.push_back(t);
			} else {
				szukajntek(v, v2, wartosc - i, ile);
			}
			v2.pop_back();
		}
	}
}

vector<vector<int> > szukajntek(int wartosc, int ile){
	vector<vector<int> > v;
	vector<int> v2;
	szukajntek(v, v2, wartosc, ile);
	return v;
}

int dodaj(vector<int> &el, vector<int> &x) {
	int ile = 0;
	for (int k = 0; k < x.size(); k++)
		if (find(el.begin(), el.end(), x[k]) == el.end()) {
			el.push_back(x[k]);
			ile++;
		}
	return ile;
}

int silnia(int n) {
	if (n == 0 || n == 1)
		return 1;
	return silnia(n - 1) * n;
}

int szukajTrojkata(int a, int n) {
	int ile = 0;
	int kombinacji = silnia(a - 2);
	for (int i = 1; i <= n - (a - 1)*a / 2; i++) {
		vector<int> el;
		vector<vector<int> > v = szukajntek(n - i, a - 1);
		for (int x = 0; x < v.size(); x++) {
			for (int y = 0; y < x; y++) {
				el.push_back(i);
				dodaj(el, v[x]);
				dodaj(el, v[y]);
				if (el.size() == 2*a - 1) {
					for (int k = 0; k < a - 1; k++) {
						for (int l = 0; l < a - 1; l++) {
							int o = n - el[k + 1] - el[l + a];
							vector<vector<int> > w = szukajntek(o, a-2);
							for (int g = 0; g < w.size(); g++) {
								int u = dodaj(el, w[g]);
								if (el.size() == 3 + 3 * (a - 2))
									ile++;
								while (u--)
									el.pop_back();
							}
						}
					}
				}
				el.clear();
			}
		}
	}
	return ile*6*kombinacji*kombinacji*kombinacji;
}

int main() {
	int a, n;
	cout << "Podaj bok\na = ";
	cin >> a;
	cout << "Podaj sume krawedzi\nn = ";
	cin >> n;
	cout << "Rozwiazan: " << szukajTrojkata(a, n) << endl;
	system("pause");
	return 0;
}