#include <bits/stdc++.h>
using namespace std;
int inline in() {
  int x;
  scanf("%d", &x);
  return x;
}
long long inline lin() {
  long long x;
  scanf("%I64d", &x);
  return x;
}
void P(long long x) { printf("%I64d", x); }
bool prm[1000007];
long long N = 1000000;
void sieve() {
  prm[1] = 1;
  for (long long i = 2; i <= sqrt(N); i++) {
    if (prm[i] == 0) {
      for (long long j = i + i; j <= N; j = j + i) prm[j] = 1;
    }
  }
}
long long bm(long long b, long long p) {
  long long namira;
  if (p == 0) return 1;
  if (p % 2 == 0) {
    namira = bm(b, p / 2);
    return ((namira % 1000000007) * (namira % 1000000007)) % 1000000007;
  } else {
    return ((b % 1000000007) * (bm(b, p - 1) % 1000000007)) % 1000000007;
  }
}
long long modinverse(long long a) { return bm(a, 1000000007 - 2); }
struct info {
  long long x, y, z;
  info(){};
  info(long long _x, long long _y, long long _z) {
    x = _x;
    y = _y;
    z = _z;
  };
  bool operator<(const info &p) const {
    if (x == p.x)
      return y < p.y;
    else
      return x < p.x;
  }
};
long long a[7];
long long b[11];
vector<long long> c;
int main() {
  long long i, r;
  for (i = 0; i < 6; i++) {
    a[i] = lin();
    b[a[i]]++;
    if (b[a[i]] == 1) {
      c.push_back(a[i]);
    }
  }
  sort(c.begin(), c.end());
  if (c.size() == 1) {
    puts("Elephant");
    return 0;
  }
  if (c.size() == 2) {
    if ((b[c[0]] == 2 && b[c[1]] == 4) || (b[c[1]] == 2 && b[c[0]] == 4)) {
      puts("Elephant");
    } else if (b[c[0]] == 1 || b[c[1]] == 1) {
      puts("Bear");
    } else {
      puts("Alien");
    }
    return 0;
  }
  if (c.size() == 3) {
    for (i = 0; i < 3; i++) {
      if (b[c[i]] == 4) {
        puts("Bear");
        return 0;
      }
    }
    puts("Alien");
    return 0;
  }
  puts("Alien");
  return 0;
}
