#include <iostream>
using namespace std;

class Fuckable {
public:
	Fuckable() =default;
	
	void fuck() { fucked = true; }
	
	bool is_fucked() { return fucked; }
	
private:
	bool fucked {false};
};

class Person {
public:
	Person(std::string n) :name {n} {}
protected:
	std::string name;
};

class Woman : public Fuckable, public Person {
public:
	Woman(std::string n) :Person {n} {}
	
	void say() {
		if (this->is_fucked())
			std::cout << this->name << " says: " <<
			"I haven't been fucked like that since grade school!\n";
	}
};

class EbarTerrorist : public Person {
public:
	EbarTerrorist(std::string n) :Person {n} {}
	
	void fuck(Fuckable& f) {
		f.fuck();
	}
};

int main() {
	Woman ur_mom {"ur mom"};
	EbarTerrorist terrorist {"that's me"};
	terrorist.fuck(ur_mom);
	ur_mom.say();
	return 0;
}