#include <iostream>
#include <algorithm>
#include <functional>
#include <string>
using namespace std;

struct c1{
	vector<int> v;
	c1(vector<int> val):v(val){}
	
	void modifyV(function<string (int)> functionHandle) {
		if(functionHandle) {
			for_each(v.begin(), v.end(), [&](int e){cout<<functionHandle(e);});
		}
	}
};

struct c2{
	int record;
	c2():record(0){};
	string c2func(int val) {
		record = max(record, val);
		return val%2?"odd ":"mean ";
	}
	void disp() {
		cout<<"\nmax number is "<<record;
	}
};

int main() {
	vector<int> v{1,2,3,4,5};
	c1 t(v);
	c2 t2;
	t.modifyV([&](int val){return t2.c2func(val);});
	t2.disp();
	return 0;
}