What will happen when you compile and run the following code:

public class X
{
    public X(long i) {System.out.println("long");}    
    public X(int i)  {System.out.println("int");}
    public X(byte b) {System.out.println("byte");}
    public X(char c) {System.out.println("char");}

    public static void main(String argv[])
    {
        new X(0L); new X(1000); new X(0); new X('c');
    }
}

A) Output: long int byte char
B) Output: long int int int
C) Output: long char byte char
D) Output: long int int char
E) Output: byte char byte char