#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define SPEED ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
typedef vector<int>vi;
typedef pair<int,int>pi;
typedef vector<pi>vpi;
typedef vector<vi>vvi;
#define double long double
#define pow powl
#define sqrt sqrtl
#define cbrt cbrtl
#define floor floorl
#define ceil ceill
#define pb push_back
#define ep emplace_back
#define PB pop_back
#define pf push_front
#define ef emplace_front
#define PF pop_front
#define mp make_pair
#define ub(a,b) upper_bound(all(a),b)-a.begin()
#define lb(a,b) lower_bound(all(a),b)-a.begin()
#define bs(a,b) binary_search(all(a),b)
#define mem(a,b) memset(a,b,sizeof(a))
#define in(a,n) FOR(i,0,n-1) cin>>a[i]
#define in1(a,n) FOR(i,1,n) cin>>a[i]
#define ff first
#define ss second
#define out(a,n) FOR(i,0,n-1) cout<<a[i]<<" ";cout<<endl;
#define out1(a,n) FOR(i,1,n) cout<<a[i]<<" ";cout<<endl;
#define clr(a) a.clear()
#define pow2(a) (1LL<<a)
#define all(a) a.begin(),a.end()
#define all1(a) a.begin()+1,a.end()
#define rall(a) a.rbegin(),a.rend()
#define rall1(a) a.rbegin(),a.rend()
#define sz(a) ((int)a.size())
#define FOR(i,a,b) for(auto i=a;i<=b;i++)
#define NFOR(i,a,b) for(auto i=a;i>=b;i--)
const int mod=1e9+7;

inline int add(int a,int b){return (a%mod + b%mod)%mod;}
inline int sub(int a ,int b){return (a%mod - b%mod + mod)%mod;}
inline int mul(int a,int b){return (a%mod * b%mod)%mod;}
inline int power(int a,int b,int MOD){int res=1;while(b){if(b&1){res*=a;res%=MOD;}a=a*a;a%=MOD;b>>=1;}return res;}

#define trace(x) cout<<#x<<" :: "<<x<<endl;
#define trace2(x,y) cout<<#x<<" :: "<<x<<"\t"<<#y<<" :: "<<y<<endl;
#define trace3(x,y,z) cout<<#x<<" :: "<<x<<"\t"<<#y<<" :: "<<y<<"\t"<<#z<<" :: "<<z<<endl;
#define trace4(x,y,z,w) cout<<#x<<" :: "<<x<<"\t"<<#y<<" :: "<<y<<"\t"<<#z<<" :: "<<z<<"\t"<<#w<<" :: "<<w<<endl;
clock_t time_p = clock();
void time()
{
  time_p = clock() - time_p;
  cerr << "Time elapsed : " << (double)(time_p)/CLOCKS_PER_SEC <<endl;
}
int dp[45][1000][1000];
signed main()
{
	 ios_base::sync_with_stdio(false);
	 cin.tie(NULL);
	 cout.tie(NULL);
	 int n,ma,mb;
	 cin>>n>>ma>>mb;
	 int g=__gcd(ma,mb);
	 ma/=g;
	 mb/=g;
	 vector<int>a,b,c;
	 for(int i=0;i<n;i++)
	 {
	 	   int x,y,z;
	 	   cin>>x>>y>>z;
	 	   a.emplace_back(x);
	 	   b.emplace_back(y);
	 	   c.emplace_back(z);
	 }
	 for(int i=0;i<n;i++)
	 {
	 	  for(int j=0;j<=1000;j++)
	 	  {
	 	  	    for(int k=0;k<=1000;k++)
	 	  	    {
	 	  	    	   dp[i][j][k]=1e9; 
	 	  	    	   if(i==0&&j==a[0]&&k==b[0])
	 	  	    	   {
	 	  	    	   	     dp[i][j][k]=c[0];
	 	  	    	   	     continue;
	 	  	    	   }
	 	  	    	   if(j==0&&k==0)
	 	  	    	   {
	 	  	    	   	    dp[i][0][0]=0;
	 	  	    	   	    continue;
	 	  	    	   }
	 	  	    	   if(i==0)
	 	  	    	   	continue;
	 	  	    	   if(a[i]<=j&&b[i]<=k)
	 	  	    	   	dp[i][j][k]=min(dp[i-1][j-a[i]][k-b[i]]+c[i],dp[i][j][k]);
	 	  	    	   dp[i][j][k]=min(dp[i][j][k],dp[i-1][j][k]);
	 	  	    }
	 	  }
	 }
	 int res=1e9;
	 for(int k=1;k<=1000;k++)
	 	if(k*ma<=900&&k*mb<=900)
	 	res=min(res,dp[n-1][k*ma][k*mb]);
	 cout<<(res==1e9 ? -1 : res)<<endl;
	 time();
	 return 0;
}

Measured memory_bytes: 157952