Amr is a young coder who likes music a lot. He always wanted to learn how to play music but he was busy coding so he got an idea.

Amr has n instruments, it takes ai days to learn i-th instrument. Being busy, Amr dedicated k days to learn how to play the maximum possible number of instruments.

Amr asked for your help to distribute his free days between instruments so that he can achieve his goal.

Input

The first line contains two numbers n, k (1 ≤ n ≤ 100, 0 ≤ k ≤ 10 000), the number of instruments and number of days respectively.

The second line contains n integers ai (1 ≤ ai ≤ 100), representing number of days required to learn the i-th instrument.

Output

In the first line output one integer m representing the maximum number of instruments Amr can learn.

In the second line output m space-separated integers: the indices of instruments to be learnt. You may output indices in any order.

if there are multiple optimal solutions output any. It is not necessary to use all days for studying.

Examples

Input

4 10
4 3 1 2


Output

4
1 2 3 4

Input

5 6
4 3 1 1 2


Output

3
1 3 4

Input

1 3
4


Output

0

Note

In the first test Amr can learn all 4 instruments.

In the second test other possible solutions are: {2, 3, 5} or {3, 4, 5}.

In the third test Amr doesn't have enough time to learn the only presented instrument.
import java.io.*;
import java.math.*;
import java.util.*;


public class Main {
    public static int ONLINE_MODE = 1;
    public static int OFFLINE_MODE = 2;

    public int mode = 0;

    public Scanner in = null;
    public BufferedWriter out = null;

    public Main(int mode, Scanner in, BufferedWriter out) {
        this.mode = mode;
        this.in = in;
        this.out = out;
    }

    public void open() {
        if (mode == Main.ONLINE_MODE) {
            in = new Scanner(System.in);
            out = new BufferedWriter(new OutputStreamWriter(System.out));
        }
    }

    public void close() {
        in.close();
        try {
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void echo(String output) {
        try {
            out.write(output);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void echos(Collection collection, String separator) {
        StringBuffer sb = new StringBuffer();
        for (Object sentence : collection) {
            sb.append(sentence.toString() + separator);
        }
        String output = sb.toString().length() > 0 ?
                sb.toString().substring(0, sb.toString().length() - separator.length()) : sb.toString();
        echo(output);
    }

    public void echo(String format, Object... args) {
        String output = String.format(format, args);
        try {
            out.write(output);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Main main = new Main(Main.ONLINE_MODE, null, null);
        main.open();
        main.execute();
        main.close();
    }

    // 工具方法

    public static int up(double num) {
        return (int) Math.ceil(num);
    }

    public static ArrayList<Character> chars(String word) {
        ArrayList<Character> chars = new ArrayList<Character>();
        for (char letter : word.toCharArray()) {
            chars.add(letter);
        }
        return chars;
    }

    // 临时区

    // 主程序

    public void execute() {
        int n = in.nextInt();
        int k = in.nextInt();
        ArrayList<Instrument> instruments = new ArrayList<Instrument>();
        for (int i = 0; i < n; i++) {
            instruments.add(new Instrument(i + 1, in.nextInt()));
        }
        Collections.sort(instruments, new Comparator<Instrument>() {
            @Override
            public int compare(Instrument o1, Instrument o2) {
                return o1.cost - o2.cost;
            }
        });
        int count = 0;
        int i;
        for (i = 0; i < n; i++) {
            int cost = instruments.get(i).cost;
            k -= cost;
            if (k < 0)
                break;
        }
        if (i == 0) {
            echo("0");
            return;
        }
        echo(i + "\n");
        StringBuffer sb = new StringBuffer();
        while (i > 0) {
            i--;
            sb.append(instruments.get(i).index + " ");
        }
        echo(sb.toString().trim());
    }

    class Instrument {
        public int index;
        public int cost;

        public Instrument(int index, int cost) {
            this.index = index;
            this.cost = cost;
        }
    }
}

class BI {
    public BigInteger bi;

    public BI(String value) {
        this.bi = new BigInteger(value);
    }

    public BI(BigInteger bi) {
        this.bi = bi;
    }

    public BI a(BI that) {
        return new BI(this.bi.add(that.bi));
    }

    public BI s(BI that) {
        return new BI(this.bi.subtract(that.bi));
    }

    public BI m(BI that) {
        return new BI(this.bi.multiply(that.bi));
    }

    public BI d(BI that) {
        return new BI(this.bi.divide(that.bi));
    }

    public BI r(BI that) {
        return new BI(this.bi.remainder(that.bi));
    }

    public int compareTo(BI that) {
        return this.bi.compareTo(that.bi);
    }

    public boolean g(BI that) {
        return this.bi.compareTo(that.bi) > 0;
    }

    public boolean ge(BI that) {
        return this.bi.compareTo(that.bi) >= 0;
    }

    public boolean l(BI that) {
        return this.bi.compareTo(that.bi) < 0;
    }

    public boolean le(BI that) {
        return this.bi.compareTo(that.bi) <= 0;
    }

    public BI a(int number) {
        return a(BI.v(number));
    }

    public BI s(int number) {
        return s(BI.v(number));
    }

    public BI m(int number) {
        return m(BI.v(number));
    }

    public BI d(int number) {
        return d(BI.v(number));
    }

    public BI r(int number) {
        return r(BI.v(number));
    }

    public int compareTo(int number) {
        return this.bi.compareTo(BI.v(number).bi);
    }

    public boolean g(int number) {
        return this.bi.compareTo(BI.v(number).bi) > 0;
    }

    public boolean ge(int number) {
        return this.bi.compareTo(BI.v(number).bi) >= 0;
    }

    public boolean l(int number) {
        return this.bi.compareTo(BI.v(number).bi) < 0;
    }

    public boolean le(int number) {
        return this.bi.compareTo(BI.v(number).bi) <= 0;
    }

    public static BI v(int number) {
        return new BI("" + number);
    }

    public String toString() {
        return this.bi + "";
    }
}