#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 7;
const int inf = 0x3f3f3f3f;
const long long INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1000000007;
const double eps = 1e-6;
const double PI = acos(-1);
int tar, n, tot, a[N], hs[N], cnt[N], mx[N], now[N];
vector<int> vc;
bool check(int add) {
  vc.clear();
  int c = tar;
  int p = mx[c];
  while (c) {
    if (add > c) add = 0;
    while (!now[p] && p) p--;
    p = min(p, mx[c]);
    if (!p && !add) break;
    if (p && hs[p] >= add) {
      vc.push_back(p);
      int v = hs[p], num = min(now[p], c / v);
      now[p] -= num;
      c -= num * v;
    } else {
      c -= add;
      add = 0;
    }
  }
  for (auto& x : vc) now[x] = cnt[x];
  return c;
}
int main() {
  scanf("%d%d", &tar, &n);
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    hs[++tot] = a[i];
  }
  sort(hs + 1, hs + tot + 1);
  tot = unique(hs + 1, hs + tot + 1) - hs - 1;
  for (int i = 1; i <= n; i++)
    cnt[lower_bound(hs + 1, hs + tot + 1, a[i]) - hs]++;
  for (int i = 1; i <= tot; i++) now[i] = cnt[i];
  for (int i = 1; i <= tar; i++)
    mx[i] = upper_bound(hs + 1, hs + tot + 1, i) - hs - 1;
  for (int i = 1; i <= tar; i++) {
    if (check(i)) {
      printf("%d\n", i);
      return 0;
    }
  }
  puts("Greed is good");
  return 0;
}
