How its output is 49 please give me its explanation for every step////////

int a=10;
int b=++a+a++ + ++a + a++ -(a==10)-(a==11)-(a==12);
cout<<b;

Tried to explain with the picture.

The expression shows dynamic behaviour try to debug it by creating subexpression and checking it value. You`ll understand it in a better manner