#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include void dfs(int x, int y, int grid[260][60], int visited[260][60]) { if (x < 0 || y < 0 || x >= 260 || y >= 60 || visited[x][y] || !grid[x][y]) { return; } visited[x][y] = 1; dfs(x - 1, y, grid, visited); dfs(x + 1, y, grid, visited); dfs(x, y - 1, grid, visited); dfs(x, y + 1, grid, visited); } int main() { int T; scanf("%d", &T); for (int i = 0; i < T; i++) { int x, y; scanf("%d %d", &x, &y); int grid[260][60] = {0}; int visited[260][60] = {0}; for (int row = 0; row < 260; row++) { for (int col = 0; col < 60; col++) { if (row & (1ULL << col)) { grid[row][col] = 1; } } } int count = 0; dfs(x, y, grid, visited); for (int row = 0; row < 260; row++) { for (int col = 0; col < 60; col++) { if (visited[row][col]) { count++; } } } printf("%d\n", count); } return 0; }