#include <bits/stdc++.h>
#include <regex>
using namespace std;
typedef long long ll;
#define ALL(a) (a.begin()),(a.end())
#define ZERO(a) memset(a, 0, sizeof(a))
#define MINUS(a) memset(a,0xff,sizeof(a))
#define SIZE(array) (sizeof(array) / sizeof(array[0]))
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n) FOR(i,0,n)
#define MAX_V 100000
#define MOD 1000000007L
#define INF 100000000000
signed main() {
int n, ma, mb;
cin >> n >> ma >> mb;
map<tuple<int, int>, int> map = {}, nmap = {};
map[make_tuple(0, 0)] = 0;
for (size_t i = 0; i < n ; i++) {
nmap = {};
int a, b, c;
cin >> a >> b >> c;
for (const auto& itr: map) {
int ao = get<0>(itr.first);
int bo = get<1>(itr.first);
if (itr.second < nmap[make_tuple(ao, bo)]) {
nmap[make_tuple(ao, bo)] = itr.second;
}
int tn = nmap[make_tuple(ao + a, bo + b)];
if (tn < itr.second + c) {
nmap[make_tuple(ao + a, bo + b)] = itr.second + c;
}
}
map = nmap;
}
int m = -1;
for (const auto& itr: map) {
int ao = get<0>(itr.first);
int bo = get<1>(itr.first);
if (ao + bo == 0) {
continue;
}
if (ao * mb == bo * ma) {
if (m == -1) {
m = itr.second;
}
m = m == -1 ? itr.second : min(m, itr.second);
}
// printf("%d, %d = %d\n", ao, bo, itr.second);
}
cout << m << endl;
}