#include <iostream>
using namespace std;
 
 
struct Pin {
  unsigned int const mask;
  Pin(unsigned int m) : mask (m) {};
  unsigned int asInput(void) {
    return mask;
  }
};
 
 
void write_config (unsigned int v) {
  cout << v <<endl;
}
 
template<typename It>
void setPins(It start, It end, unsigned int (Pin::*fn)(void) ) {
  unsigned int cfg = 0; // identity for bitwise or
  for (; start != end; ++start) {
    cfg |= ((*start).*fn)(); // need to test that, wait a minute
  }
  write_config(cfg);
};
int main() {
	Pin pins[] = {1, 2, 4};
    setPins(pins, pins + 3, &Pin::asInput);
	return 0;
}
				I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCnN0cnVjdCBQaW4gewogIHVuc2lnbmVkIGludCBjb25zdCBtYXNrOwogIFBpbih1bnNpZ25lZCBpbnQgbSkgOiBtYXNrIChtKSB7fTsKICB1bnNpZ25lZCBpbnQgYXNJbnB1dCh2b2lkKSB7CiAgICByZXR1cm4gbWFzazsKICB9Cn07CgoKdm9pZCB3cml0ZV9jb25maWcgKHVuc2lnbmVkIGludCB2KSB7CiAgY291dCA8PCB2IDw8ZW5kbDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgSXQ+CnZvaWQgc2V0UGlucyhJdCBzdGFydCwgSXQgZW5kLCB1bnNpZ25lZCBpbnQgKFBpbjo6KmZuKSh2b2lkKSApIHsKICB1bnNpZ25lZCBpbnQgY2ZnID0gMDsgLy8gaWRlbnRpdHkgZm9yIGJpdHdpc2Ugb3IKICBmb3IgKDsgc3RhcnQgIT0gZW5kOyArK3N0YXJ0KSB7CiAgICBjZmcgfD0gKCgqc3RhcnQpLipmbikoKTsgLy8gbmVlZCB0byB0ZXN0IHRoYXQsIHdhaXQgYSBtaW51dGUKICB9CiAgd3JpdGVfY29uZmlnKGNmZyk7Cn07CmludCBtYWluKCkgewoJUGluIHBpbnNbXSA9IHsxLCAyLCA0fTsKICAgIHNldFBpbnMocGlucywgcGlucyArIDMsICZQaW46OmFzSW5wdXQpOwoJcmV0dXJuIDA7Cn0=