#include <bits/stdc++.h> using namespace std; using ll = long long; deque<pair<int,int>> snake; bool moveSnake(int dir) { // TODO: 请实现移动逻辑 snake.pop_front(); snake.push_back(snake.back()); switch (dir) { case 1: snake.back().second+=1; break; case 2: snake.back().second-=1; break; case 3: snake.back().first-=1; break; case 4: snake.back().first+=1; break; } auto it=find(snake.begin(),prev(snake.end()),snake.back()); if(it!=prev(snake.end())) return true; return false; } bool eatSnake(int dir) { // TODO: 请实现吃果子生长逻辑 snake.push_back(snake.back()); switch (dir) { case 1: snake.back().second+=1; break; case 2: snake.back().second-=1; break; case 3: snake.back().first-=1; break; case 4: snake.back().first+=1; break; } auto it=find(snake.begin(),prev(snake.end()),snake.back()); if(it!=prev(snake.end())) return true; return false; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n, q; cin >> n >> q; snake.clear(); for (int i = 0; i < n; i++) { int x, y; cin >> x >> y; snake.emplace_back(x, y); } for (int i = 0; i < q; i++) { int op, dir; cin >> op >> dir; bool collision = (op == 1 ? moveSnake(dir) : eatSnake(dir)); if (collision) { cout << -1 << '\n'; return 0; } else { for (auto it = snake.rbegin(); it != snake.rend(); ++it) { cout << it->first << ' ' << it->second << '\n'; } } } return 0; }