#include <iostream>

class A;
void l(A& f);
class A{
public:

    virtual void S(){std::cout <<"S A\n";}
    void Z(){std::cout <<"Z A\n";}
};
class B:public A{
public:
    void S()  {std::cout <<"S B\n";}
    void Z(){std::cout <<"Z B\n";}
};
int main() {
    B d;
    l(d);


    return 0;
}

void l(A& f){
    f.S();
    f.Z();

}