# K - Stones

def main():

    N, K, *A = list(map(int, open(0).read().split()))

    dp = [0] * (K + 1)

    for i in range(1, K + 1):

        for a in A:

            if i - a >= 0:

                dp[i] |= dp[i - a] ^ 1

            if dp[i]:

                break

    print(("First" if dp[-1] else "Second"))





if __name__ == "__main__":

    main()

# K - Stones

def main():

    N, K, *A = list(map(int, open(0).read().split()))

    dp = [False] * (K + 1)

    for i in range(K):

        if dp[i]:

            continue

        for a in A:

            if i + a > K:

                break

            dp[i + a] = True

    print(("First" if dp[-1] else "Second"))





if __name__ == "__main__":

    main()

# K - Stones
def main():
    N, K, *A = list(map(int, open(0).read().split()))
    dp = [0] * (K + 1)
    for i in range(1, K + 1):
        for a in A:
            if i - a >= 0:
                dp[i] |= dp[i - a] ^ 1
            if dp[i]:
                break
    print(("First" if dp[-1] else "Second"))


if __name__ == "__main__":
    main()

# K - Stones
def main():
    N, K, *A = list(map(int, open(0).read().split()))
    dp = [False] * (K + 1)
    for i in range(K):
        if dp[i]:
            continue
        for a in A:
            if i + a > K:
                break
            dp[i + a] = True
    print(("First" if dp[-1] else "Second"))


if __name__ == "__main__":
    main()

-    dp = [0] * (K + 1) -    for i in range(1, K + 1): +    dp = [False] * (K + 1) +    for i in range(K): +        if dp[i]: +            continue -            if i - a >= 0: -                dp[i] |= dp[i - a] ^ 1 -            if dp[i]: +            if i + a > K: +            dp[i + a] = True