In the function mystery(int *ptra, int *ptrb), the pointer variables ptra and ptrb are passed by value.
The code inside mystery swaps the local pointer variables themselves rather than the values pointed to by them (i.e., it performs temp = ptrb; ptrb = ptra; ptra = temp; instead of dereferencing them like *temp = *ptrb;).
Therefore, any call to mystery() modifies only local copies of the pointers and has no effect on the variables a, b, c, or d in main().
As a result, the value of a remains 2016 throughout the program execution, and `printf("%d
", a)` prints 2016.