Yes , a=169 , b=169 is correct answer.
since static scoping is sssigned to variable b , so it will retain its value through out the program.
first of all the variable b is assigned a value of 12 , and just after that procedure N is called , and it made b= b+1 to value 13 , and since b is static so it will retain the value 13 throught the program. Just after this M(b) is called and the code a=a*a is called off , so 13*13= 169.
so the value of a will be 169 and b =169.
http://stackoverflow.com/questions/41215162/value-of-callee-and-caller-when-using-call-by-references