import sys

from collections import deque

import copy



from math import *



def get_read_func(fileobject):

    if fileobject == None :

        return raw_input

    else:

        return fileobject.readline



def main():

    if len(sys.argv) > 1:

        f = open(sys.argv[1])

    else:

        f = None

    read_func = get_read_func(f);

    input_raw = read_func().strip().split()

    [N, x] = [int(input_raw[0]), int(input_raw[1])]

    A = []

    A_dic = {}

    input_raw = read_func().strip().split()

    for i in range(N):



        a = int(input_raw[i])

        A.append(a)

        if a in A_dic:

            A_dic[a] += 1

        else:

            A_dic[a] = 1

    A.sort()

    max_count = 0

    for i in range(N):

        count = 0

        x_tmp = x

        for j in range(i, N):

            if x_tmp - A[j] >= 0:

                if j < N - 1:

                    count += 1

                else:

                    if x_tmp == A[j]:

                        count += 1

            x_tmp -= A[j]

        #if x_tmp == 0:

        max_count = max(max_count, count)





    print(max_count)







if __name__ == '__main__':

    main()

import sys

from collections import deque

import copy

import math

def get_read_func(fileobject):

    if fileobject == None :

        return raw_input

    else:

        return fileobject.readline





def main():

    if len(sys.argv) > 1:

        f = open(sys.argv[1])

    else:

        f = None

    read_func = get_read_func(f);

    input_raw = read_func().strip().split()

    [N, x] = [int(input_raw[0]), int(input_raw[1])]

    input_raw = read_func().strip().split()

    A = []

    for i in range(N):

        A.append(int(input_raw[i]))



    A.sort()



    for i in range(len(A)):

        x -= A[i]

        if x == 0:

            print(i + 1)

            return

        if x < 0:

            print(i)

            return



    print(len(A) - 1)







if __name__ == '__main__':

    main()
import sys
from collections import deque
import copy
from math import *


def get_read_func(fileobject):
    if fileobject == None:
        return raw_input
    else:
        return fileobject.readline


def main():
    if len(sys.argv) > 1:
        f = open(sys.argv[1])
    else:
        f = None
    read_func = get_read_func(f)
    input_raw = read_func().strip().split()
    [N, x] = [int(input_raw[0]), int(input_raw[1])]
    A = []
    A_dic = {}
    input_raw = read_func().strip().split()
    for i in range(N):
        a = int(input_raw[i])
        A.append(a)
        if a in A_dic:
            A_dic[a] += 1
        else:
            A_dic[a] = 1
    A.sort()
    max_count = 0
    for i in range(N):
        count = 0
        x_tmp = x
        for j in range(i, N):
            if x_tmp - A[j] >= 0:
                if j < N - 1:
                    count += 1
                else:
                    if x_tmp == A[j]:
                        count += 1
            x_tmp -= A[j]
        # if x_tmp == 0:
        max_count = max(max_count, count)
    print(max_count)


if __name__ == "__main__":
    main()

import sys
from collections import deque
import copy
import math


def get_read_func(fileobject):
    if fileobject == None:
        return raw_input
    else:
        return fileobject.readline


def main():
    if len(sys.argv) > 1:
        f = open(sys.argv[1])
    else:
        f = None
    read_func = get_read_func(f)
    input_raw = read_func().strip().split()
    [N, x] = [int(input_raw[0]), int(input_raw[1])]
    input_raw = read_func().strip().split()
    A = []
    for i in range(N):
        A.append(int(input_raw[i]))
    A.sort()
    for i in range(len(A)):
        x -= A[i]
        if x == 0:
            print(i + 1)
            return
        if x < 0:
            print(i)
            return
    print(len(A) - 1)


if __name__ == "__main__":
    main()

-from math import * +import math +    input_raw = read_func().strip().split() -    A_dic = {} -    input_raw = read_func().strip().split() -        a = int(input_raw[i]) -        A.append(a) -        if a in A_dic: -            A_dic[a] += 1 -        else: -            A_dic[a] = 1 +        A.append(int(input_raw[i])) -    max_count = 0 -    for i in range(N): -        count = 0 -        x_tmp = x -        for j in range(i, N): -            if x_tmp - A[j] >= 0: -                if j < N - 1: -                    count += 1 -                else: -                    if x_tmp == A[j]: -                        count += 1 -            x_tmp -= A[j] -        # if x_tmp == 0: -        max_count = max(max_count, count) -    print(max_count) +    for i in range(len(A)): +        x -= A[i] +        if x == 0: +            print(i + 1) +            return +        if x < 0: +            print(i) +            return +    print(len(A) - 1)