Retornar um dos dois possíveis objetos de diferentes tipos compartilhando um método

Eu tenho 2 classes:

public class Articles
{
    private string name;

    public Articles(string name)
    {
        this.name = name;
    }

    public void Output()
    {
        Console.WriteLine("The class is: " + this.GetType());
        Console.WriteLine("The name is: " + name);
    }
}

E

public class Questionnaire 
{
    private string name;

    public Questionnaire(string name)
    {
        this.name = name;
    }

    public void Output()
    {
        Console.WriteLine("The class is: " + this.GetType());
        Console.WriteLine("The name is: " + name);
    }
}

Eu quero escrever um método, que leva um inteiro (1 significadoArticles deve ser devolvido, 2 significandoQuestionnaire) e um nome.

Este método deve retornar uma instância de uma dessas duas classes:

public [What type??] Choose(int x, string name)
    {
        if (x == 1)
        {
           Articles art = new Articles(name);
           return art;
        }
        if (x == 2)
        {
            Questionnaire ques = new Questionnaire(name);
            return ques;
        }
    }

Qual tipo de retorno devo usar, para poder ligarOutput() no resultado?

questionAnswers(6)

yourAnswerToTheQuestion