PUSH_3
PUSH_3(X, DATA_, 1, (ds) + (n), o, (p), s, X##mA, (dA), ##a); \
PUSH_3(X, DATA_, 1, 0, o, (p), s, X##mC, (dC), \
PUSH_3(X, DATAp, ds, 0, o, (p), s, X##mC, (dp), \