// ── ABOUT ────────────────────────────────────────────────────────
// Same as vector but supports O(1) insert/delete at BOTH ends
// Random access O(1) like vector
 
// ── CREATE ───────────────────────────────────────────────────────
deque<int> dq;
 
// ── INSERT ───────────────────────────────────────────────────────
dq.push_back(1);                         // O(1) insert at back
dq.push_back(2);
dq.push_front(3);                        // O(1) insert at front
// dq = {3, 1, 2}
 
// ── DELETE ───────────────────────────────────────────────────────
dq.pop_back();                           // O(1)
dq.pop_front();                          // O(1)
 
// ── ACCESS ───────────────────────────────────────────────────────
dq.front();                              // first element
dq.back();                               // last element
dq[2];                                   // O(1) random access
 
// ── ITERATE ──────────────────────────────────────────────────────
for (auto &i : dq)
    cout << i << " ";