#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
class A {
int a;
public:
A(int a) : a(a) {}
int getA() const { return a; }
void setA(int a) { this->a = a; }
bool operator<(const A & b) const { return a<b.a; }
};
struct myprinter {
void operator()(const A & a) { cout << a.getA() << ", "; }
};
struct doubler {
void operator()(A& a) { a.setA(a.getA()*2); }
};
int main() {
int mynumbers[] = {8, 9, 7, 6, 4, 1};
vector<A> s1(mynumbers, mynumbers+6);
std::sort(s1.begin(), s1.end());
for_each(s1.begin(), s1.end(), doubler());
for_each(s1.begin(), s1.end(), myprinter());
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c2V0Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQSB7CiAgICBpbnQgYTsKcHVibGljOgogICAgQShpbnQgYSkgOiBhKGEpIHt9CiAgICBpbnQgZ2V0QSgpIGNvbnN0IHsgcmV0dXJuIGE7IH0KICAgIHZvaWQgc2V0QShpbnQgYSkgeyB0aGlzLT5hID0gYTsgfQogICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgQSAmIGIpIGNvbnN0IHsgcmV0dXJuIGE8Yi5hOyB9Cn07CgpzdHJ1Y3QgbXlwcmludGVyIHsgCiAgICB2b2lkIG9wZXJhdG9yKCkoY29uc3QgQSAmIGEpIHsgY291dCA8PCBhLmdldEEoKSA8PCAiLCAiOyB9ICAKfTsKCnN0cnVjdCBkb3VibGVyIHsKICAgIHZvaWQgb3BlcmF0b3IoKShBJiBhKSB7IGEuc2V0QShhLmdldEEoKSoyKTsgfQp9OwoKaW50IG1haW4oKSB7CiAgICBpbnQgbXludW1iZXJzW10gPSB7OCwgOSwgNywgNiwgNCwgMX07CiAgICB2ZWN0b3I8QT4gczEobXludW1iZXJzLCBteW51bWJlcnMrNik7CiAgICBzdGQ6OnNvcnQoczEuYmVnaW4oKSwgczEuZW5kKCkpOwogICAgZm9yX2VhY2goczEuYmVnaW4oKSwgczEuZW5kKCksIGRvdWJsZXIoKSk7CiAgICBmb3JfZWFjaChzMS5iZWdpbigpLCBzMS5lbmQoKSwgbXlwcmludGVyKCkpOwogICAgcmV0dXJuIDA7Cn0=