using System;
using System.Collections.Generic;
using System.Linq;
using static AtCoder.Io;

namespace AtCoder
{
    class Program
    {
        static void Main()
        {
            var nab = ReadIntArray();
            var n = nab[0];
            var a = nab[1];
            var b = nab[2];
            var abcs = new Tuple<int, int, int>[n];
            for (var i = 0; i < n; i++)
            {
                var abc = ReadIntArray();
                abcs[i] = Tuple.Create(abc[0], abc[1], abc[2]);
            }
            var sumA = abcs.Sum(v => v.Item1);
            var sumB = abcs.Sum(v => v.Item2);
            var sumC = abcs.Sum(v => v.Item3);

            var dp = new int[n + 1, sumA, sumB];
            Init(dp, sumC + 1);
            dp[0, 0, 0] = 0;

            for (var i = 0; i < n; i++)
            {
                for (var j = 0; j < dp.GetLength(1); j++)
                {
                    for (var k = 0; k < dp.GetLength(2); k++)
                    {
                        if (dp[i, j, k] < sumC)
                        {
                            ChangeMin(ref dp[i + 1, j, k], dp[i, j, k]);
                            if (j + abcs[i].Item1 < dp.GetLength(1) && k + abcs[i].Item2 < dp.GetLength(2))
                            {
                                ChangeMin(ref dp[i + 1, j + abcs[i].Item1, k + abcs[i].Item2], dp[i, j, k] + abcs[i].Item3);
                            }
                        }
                    }
                }
            }


            var ans = sumC + 1;
            for (var j = 1; j < dp.GetLength(1); j++)
            {
                for (var k = 1; k < dp.GetLength(2); k++)
                {
                    if (j * b - k * a == 0)
                    {
                        ChangeMin(ref ans, dp[n, j, k]);
                    }
                }
            }
            if (ans < sumC + 1)
            {
                Console.WriteLine($"{ans}");
            }
            else
            {
                Console.WriteLine($"{-1}");
            }
        }

        private static void ChangeMin(ref int lhs, int rhs)
        {
            if (lhs > rhs) lhs = rhs;
        }
        private static void Init<T>(T[,,] source, T value)
        {
            for (var i = 0; i < source.GetLength(0); i++)
            {
                for (var j = 0; j < source.GetLength(1); j++)
                {
                    for (var k = 0; k < source.GetLength(2); k++)
                    {
                        source[i, j, k] = value;
                    }
                }
            }
        }
    }

    public static class Io
    {
        public static string ReadString() => Console.ReadLine();
        public static string[] ReadStringArray() => ReadString().Split(' ');
        public static int ReadInt() => int.Parse(ReadString());
        public static long ReadLong() => long.Parse(ReadString());
        public static int[] ReadIntArray() => ReadStringArray().ParseInt().ToArray();
        public static long[] ReadLongArray() => ReadStringArray().ParseLong().ToArray();
        public static IEnumerable<int> ParseInt(this IEnumerable<string> source) => source.Select(int.Parse);
        public static IEnumerable<long> ParseLong(this IEnumerable<string> source) => source.Select(long.Parse);
    }
}


Measured memory_bytes: 19424