- #include <vector> 
- #include <iostream> 
-   
- struct Node 
- { 
-     Node(int i): i_(i) {} 
-     int i_; 
- }; 
-   
- class FSM{ 
-     private: 
-         std::vector<Node> nodeList; 
-         int cap; 
-         int obs; 
-         int topNode; 
-   
-     public: 
-         FSM(int nodeCap, int numObs){ 
-             cap = nodeCap; 
-             obs = numObs; 
-             topNode = -1; 
-         } 
-   
-         bool addNode(){ 
-             if (isFull()) return false; 
-             nodeList.push_back(Node(obs)); 
-             topNode++; 
-             return true; 
-         } 
-   
-         bool isFull() { return obs >= cap ? true : false; } 
-   
-         void printNodeLocations() 
-         { 
-             for(Node& n : nodeList) { std::cout << &n << std::endl; } 
-         } 
- }; 
-   
- int main() 
- { 
-     FSM machine(2, 0); 
-     machine.addNode(); 
-     machine.addNode(); 
-     machine.printNodeLocations(); 
-   
-     return 0; 
- } 
				I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IE5vZGUKewogICAgTm9kZShpbnQgaSk6IGlfKGkpIHt9CiAgICBpbnQgaV87Cn07CgpjbGFzcyBGU017CiAgICBwcml2YXRlOgogICAgICAgIHN0ZDo6dmVjdG9yPE5vZGU+IG5vZGVMaXN0OwogICAgICAgIGludCBjYXA7CiAgICAgICAgaW50IG9iczsKICAgICAgICBpbnQgdG9wTm9kZTsKCiAgICBwdWJsaWM6CiAgICAgICAgRlNNKGludCBub2RlQ2FwLCBpbnQgbnVtT2JzKXsKICAgICAgICAgICAgY2FwID0gbm9kZUNhcDsKICAgICAgICAgICAgb2JzID0gbnVtT2JzOwogICAgICAgICAgICB0b3BOb2RlID0gLTE7CiAgICAgICAgfQoKICAgICAgICBib29sIGFkZE5vZGUoKXsKICAgICAgICAgICAgaWYgKGlzRnVsbCgpKSByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIG5vZGVMaXN0LnB1c2hfYmFjayhOb2RlKG9icykpOwogICAgICAgICAgICB0b3BOb2RlKys7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBib29sIGlzRnVsbCgpIHsgcmV0dXJuIG9icyA+PSBjYXAgPyB0cnVlIDogZmFsc2U7IH0KICAgICAgICAKICAgICAgICB2b2lkIHByaW50Tm9kZUxvY2F0aW9ucygpCiAgICAgICAgewogICAgICAgICAgICBmb3IoTm9kZSYgbiA6IG5vZGVMaXN0KSB7IHN0ZDo6Y291dCA8PCAmbiA8PCBzdGQ6OmVuZGw7IH0KICAgICAgICB9Cn07CgppbnQgbWFpbigpCnsKICAgIEZTTSBtYWNoaW5lKDIsIDApOwogICAgbWFjaGluZS5hZGROb2RlKCk7CiAgICBtYWNoaW5lLmFkZE5vZGUoKTsKICAgIG1hY2hpbmUucHJpbnROb2RlTG9jYXRpb25zKCk7CiAgICAKICAgIHJldHVybiAwOwp9