/* 第一步判断是不是先手必败 非先手必败的话必有解,则输出sg为0的点 */ /*Accepted 2176 109MS 972K 687 B G++ Yu*/ #include <stdio.h> const int MAXM = 200200; int a[MAXM]; int main() { int ans; int m; while(scanf("%d", &m), m) { ans = 0; for(int i = 0; i < m; i ++) { scanf("%d", &a[i]); ans ^= a[i]; } if(ans == 0) { puts("No"); continue; } else { puts("Yes"); for(int i = 0; i < m; i ++) { int ret = ans ^ a[i]; if(ret < a[i]) { printf("%d %d\n", a[i], ret); } } } } return 0; }