#include #include #include #include #include #include #include using namespace std; using namespace atcoder; using ll = long long; using mint = modint998244353; using vi = vector; using vvi = vector; using vvvi = vector; using vll = vector; using vvll = vector; using vvvll = vector; using vmi = vector; using vvmi = vector; using vvvmi = vector; #define all(a) (a).begin(), (a).end() #define rep2(i, m, n) for (int i = (m); i < (n); ++i) #define rep(i, n) rep2(i, 0, n) #define drep2(i, m, n) for (int i = (m)-1; i >= (n); --i) #define drep(i, n) drep2(i, n, 0) void solve(){ } class Rational { public: long long num; long long den; Rational(ll numerator = 0, ll denominator = 1) { if (denominator == 0) { throw std::invalid_argument("denominator must not be zero"); } // 負の符号は分子に寄せる if (denominator < 0) { numerator = -numerator; denominator = -denominator; } long long g = gcd(numerator, denominator); num = numerator / g; den = denominator / g; } Rational operator+(const Rational& other) const { ll n = num * other.den + den * other.num; ll d = den * other.den; return Rational(n, d); } }; ll p(ll a, ll n){ ll w = 1; rep(i, n)w *= a; return w; } int main(){ int n; ll a, b; cin >> n >> a >> b; vll kaijo(12, 1); rep2(i, 2, 12)kaijo[i] = kaijo[i-1]*(ll)i; vll k(n+1); rep(i, n+1)cin >> k[i]; vll s(n+1); Rational ans(0, 1); rep(i, n+1){ ll c = p(b, i+1) - p(a, i+1); Rational d(k[i]*c, (ll)(i+1)); ans = ans + d; } if(ans.num >= 0){ cout << ans.num / ans.den << endl; }else{ if(ans.num % ans.den == 0){ cout << ans.num / ans.den << endl; }else{ cout << ans.num / ans.den - 1<< endl; } } return 0; }