/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
    public static void main(String[] args) {
        Player player = new Player();
        Random random = new Random();
        for (int i = 0; i < 10; i++) {
            GameObject go = random.nextBoolean() ? new Chest() : new NPC();
            go.accept(player);
        }
    }
}

class Player {
    void handle(Chest c) {
        System.out.println("opening a chest");
    }
    public void handle(NPC npc) {
        System.out.println("meeting NPC");
    }
}
abstract class GameObject {
    abstract void accept(Player p);
}
class Chest extends GameObject {
    @Override void accept(Player p) {
        p.handle(this);
    }
}
class NPC extends GameObject {
    @Override void accept(Player p) {
        p.handle(this);
    }
}