#include <bits/stdc++.h>
#define loop(i,n) for (int i = 0; i < n; ++i)
using namespace std;
using ldbl = long double;
using cp = complex<ldbl>;
const ldbl pi = acos(-1), twice_pi = 2*pi, eps = 1e-10;
inline istream& operator>>(istream &in, cp &z) {
ldbl x, y; in >> x >> y, z = cp(x,y); return in; }
inline ldbl degrees_to_rad(ldbl angle) { return angle*pi/180; }
inline ldbl rad_to_degress(ldbl angle) { return angle*180/pi; }
inline ldbl dot_product(const cp &a, const cp &b) { return real(conj(a)*b); }
inline ldbl cross_product(const cp &a, const cp &b) { return imag(conj(a)*b); }
namespace std {
bool operator<(const cp &a, const cp &b) {
ldbl d;
if (abs(d = real(a)-real(b)) > eps)
return d < 0;
if (abs(d = imag(a)-imag(b)) > eps)
return d < 0;
return false; } }
inline cp polar_to_cartesian(const ldbl rho, const ldbl theta) {
return polar(rho,theta); }
inline void cartesian_to_polar(const cp &a, ldbl &rho, ldbl &theta) {
rho = abs(a), theta = arg(a); }
inline cp rotate(const cp &a, const ldbl theta) {
return a*polar_to_cartesian(1,theta); }
inline cp rotate(const cp &a, const cp &origin, const ldbl theta) {
return origin+(a-origin)*polar_to_cartesian(1,theta); }
inline ldbl squared_distance(const cp &a, const cp &b) { return norm(a-b); }
inline ldbl Euclidean_distance(const cp &a, const cp &b) { return abs(a-b); }
inline ldbl angle(const cp &a, const cp &b) { return arg(a-b); }
inline cp unit_vector(const cp &a) { return polar_to_cartesian(1,arg(a)); }
inline cp projection(const cp &p, const cp &v) {
const auto u = unit_vector(v);
return dot_product(p,u)*u; }
inline ldbl angle_ABC(const cp &a, const cp &b, const cp &c) {
ldbl g = angle(b,a)-angle(b,c);
if (g <= -pi) // return g in semi-closed interval ]-pi,pi]
g += twice_pi;
if (g > pi)
g -= twice_pi;
return g; }
inline ldbl triangle_area(const cp &a, const cp &b, const cp &c) {
const ldbl A = abs(b-a), B = abs(c-b), C = abs(a-c), s = (A+B+C)/2;
return sqrt(s*(s-A)*(s-B)*(s-C)); }
struct line: pair<cp,cp> {
ldbl slope() const { return tan(angle(first,second)); }
cp to_vector() const { return second-first; }
cp projection_onto(const cp &p) const {
const auto c = p-first, d = to_vector();
return projection(c,d); }
cp projection_across(const cp &p) const {
const auto c = p-first, d = to_vector();
return c-projection(c,d); }
cp reflect_across(const cp &p) const {
static const auto two = cp(2,0);
const auto c = p-first, d = to_vector();
return two*(first+projection(c,d))-p; }
bool parallel(const line &b) const {
const auto c = to_vector(), u = b.first-first, v = b.second-second;
return abs(cross_product(u,c)-cross_product(v,c)) < eps; }
cp intersection(const line &b) const {
const auto c = to_vector(), u = b.first-first, v = b.second-second;
const auto c1 = cross_product(u,c), c2 = cross_product(v,c);
return (c1*b.second-c2*b.first)/(c2-c1); } };
int main() {
int n; ldbl x; vector<cp> v;
cin >> n, v.resize(n);
loop(i,n)
cin >> v[i];
sort(v.begin(),v.end());
loop(i,n)
cout << v[i] << ' '; }
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbG9vcChpLG4pIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdXNpbmcgbGRibCA9ICAgbG9uZyBkb3VibGU7CnVzaW5nIGNwICAgPSBjb21wbGV4PGxkYmw+OwoKY29uc3QgbGRibCBwaSA9IGFjb3MoLTEpLCB0d2ljZV9waSA9IDIqcGksIGVwcyA9IDFlLTEwOwoKaW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4oaXN0cmVhbSAmaW4sIGNwICZ6KSB7CiAgICBsZGJsIHgsIHk7IGluID4+IHggPj4geSwgeiA9IGNwKHgseSk7IHJldHVybiBpbjsgfQoKaW5saW5lIGxkYmwgZGVncmVlc190b19yYWQobGRibCBhbmdsZSkgeyByZXR1cm4gYW5nbGUqcGkvMTgwOyB9CmlubGluZSBsZGJsIHJhZF90b19kZWdyZXNzKGxkYmwgYW5nbGUpIHsgcmV0dXJuIGFuZ2xlKjE4MC9waTsgfQogICAgCmlubGluZSBsZGJsICAgZG90X3Byb2R1Y3QoY29uc3QgY3AgJmEsIGNvbnN0IGNwICZiKSB7IHJldHVybiByZWFsKGNvbmooYSkqYik7IH0KaW5saW5lIGxkYmwgY3Jvc3NfcHJvZHVjdChjb25zdCBjcCAmYSwgY29uc3QgY3AgJmIpIHsgcmV0dXJuIGltYWcoY29uaihhKSpiKTsgfQoKbmFtZXNwYWNlIHN0ZCB7Cglib29sIG9wZXJhdG9yPChjb25zdCBjcCAmYSwgY29uc3QgY3AgJmIpIHsKICAgIAlsZGJsIGQ7CiAgICAJaWYgKGFicyhkID0gcmVhbChhKS1yZWFsKGIpKSA+IGVwcykKICAgIAkJcmV0dXJuIGQgPCAwOwogICAgCWlmIChhYnMoZCA9IGltYWcoYSktaW1hZyhiKSkgPiBlcHMpCiAgICAJCXJldHVybiBkIDwgMDsKICAgIAlyZXR1cm4gZmFsc2U7IH0gfQogICAgCmlubGluZSBjcCBwb2xhcl90b19jYXJ0ZXNpYW4oY29uc3QgbGRibCByaG8sIGNvbnN0IGxkYmwgdGhldGEpIHsKICAgIHJldHVybiBwb2xhcihyaG8sdGhldGEpOyB9CmlubGluZSB2b2lkIGNhcnRlc2lhbl90b19wb2xhcihjb25zdCBjcCAmYSwgbGRibCAmcmhvLCBsZGJsICZ0aGV0YSkgewogICAgcmhvID0gYWJzKGEpLCB0aGV0YSA9IGFyZyhhKTsgfQoKaW5saW5lIGNwIHJvdGF0ZShjb25zdCBjcCAmYSwgY29uc3QgbGRibCB0aGV0YSkgeyAKICAgIHJldHVybiBhKnBvbGFyX3RvX2NhcnRlc2lhbigxLHRoZXRhKTsgfQppbmxpbmUgY3Agcm90YXRlKGNvbnN0IGNwICZhLCBjb25zdCBjcCAmb3JpZ2luLCBjb25zdCBsZGJsIHRoZXRhKSB7IAogICAgcmV0dXJuIG9yaWdpbisoYS1vcmlnaW4pKnBvbGFyX3RvX2NhcnRlc2lhbigxLHRoZXRhKTsgfQoKaW5saW5lIGxkYmwgc3F1YXJlZF9kaXN0YW5jZShjb25zdCBjcCAmYSwgY29uc3QgY3AgJmIpIHsgcmV0dXJuIG5vcm0oYS1iKTsgfQppbmxpbmUgbGRibCBFdWNsaWRlYW5fZGlzdGFuY2UoY29uc3QgY3AgJmEsIGNvbnN0IGNwICZiKSB7IHJldHVybiBhYnMoYS1iKTsgfQppbmxpbmUgbGRibCBhbmdsZShjb25zdCBjcCAmYSwgY29uc3QgY3AgJmIpIHsgcmV0dXJuIGFyZyhhLWIpOyB9CmlubGluZSBjcCB1bml0X3ZlY3Rvcihjb25zdCBjcCAmYSkgeyByZXR1cm4gcG9sYXJfdG9fY2FydGVzaWFuKDEsYXJnKGEpKTsgfQppbmxpbmUgY3AgcHJvamVjdGlvbihjb25zdCBjcCAmcCwgY29uc3QgY3AgJnYpIHsgCiAgICBjb25zdCBhdXRvIHUgPSB1bml0X3ZlY3Rvcih2KTsgCiAgICByZXR1cm4gZG90X3Byb2R1Y3QocCx1KSp1OyB9CgppbmxpbmUgbGRibCBhbmdsZV9BQkMoY29uc3QgY3AgJmEsIGNvbnN0IGNwICZiLCBjb25zdCBjcCAmYykgewogICAgbGRibCBnID0gYW5nbGUoYixhKS1hbmdsZShiLGMpOyAKICAgIGlmIChnIDw9IC1waSkgLy8gcmV0dXJuIGcgaW4gc2VtaS1jbG9zZWQgaW50ZXJ2YWwgXS1waSxwaV0KICAgICAgICBnICs9IHR3aWNlX3BpOwogICAgaWYgKGcgPiBwaSkKICAgICAgICBnIC09IHR3aWNlX3BpOwogICAgcmV0dXJuIGc7IH0KCmlubGluZSBsZGJsIHRyaWFuZ2xlX2FyZWEoY29uc3QgY3AgJmEsIGNvbnN0IGNwICZiLCBjb25zdCBjcCAmYykgewogICAgY29uc3QgbGRibCBBID0gYWJzKGItYSksIEIgPSBhYnMoYy1iKSwgQyA9IGFicyhhLWMpLCBzID0gKEErQitDKS8yOwogICAgcmV0dXJuIHNxcnQocyoocy1BKSoocy1CKSoocy1DKSk7IH0KICAgIApzdHJ1Y3QgbGluZTogcGFpcjxjcCxjcD4gewoJbGRibCBzbG9wZSgpIGNvbnN0IHsgcmV0dXJuIHRhbihhbmdsZShmaXJzdCxzZWNvbmQpKTsgfQoJY3AgdG9fdmVjdG9yKCkgY29uc3QgeyByZXR1cm4gc2Vjb25kLWZpcnN0OyB9CgljcCBwcm9qZWN0aW9uX29udG8oY29uc3QgY3AgJnApIGNvbnN0IHsKICAgIAljb25zdCBhdXRvIGMgPSBwLWZpcnN0LCBkID0gdG9fdmVjdG9yKCk7IAogICAgCXJldHVybiBwcm9qZWN0aW9uKGMsZCk7IH0gICAgIAoJY3AgcHJvamVjdGlvbl9hY3Jvc3MoY29uc3QgY3AgJnApIGNvbnN0IHsKICAgIAljb25zdCBhdXRvIGMgPSBwLWZpcnN0LCBkID0gdG9fdmVjdG9yKCk7IAogICAgCXJldHVybiBjLXByb2plY3Rpb24oYyxkKTsgfQogICAgY3AgcmVmbGVjdF9hY3Jvc3MoY29uc3QgY3AgJnApIGNvbnN0IHsKICAgIAlzdGF0aWMgY29uc3QgYXV0byB0d28gPSBjcCgyLDApOyAKICAgIAljb25zdCBhdXRvIGMgPSBwLWZpcnN0LCBkID0gdG9fdmVjdG9yKCk7IAogICAgCXJldHVybiB0d28qKGZpcnN0K3Byb2plY3Rpb24oYyxkKSktcDsgfQogICAgYm9vbCBwYXJhbGxlbChjb25zdCBsaW5lICZiKSBjb25zdCB7CiAgICAJY29uc3QgYXV0byBjID0gdG9fdmVjdG9yKCksIHUgPSBiLmZpcnN0LWZpcnN0LCB2ID0gYi5zZWNvbmQtc2Vjb25kOwogICAgCXJldHVybiBhYnMoY3Jvc3NfcHJvZHVjdCh1LGMpLWNyb3NzX3Byb2R1Y3QodixjKSkgPCBlcHM7IH0KCWNwIGludGVyc2VjdGlvbihjb25zdCBsaW5lICZiKSBjb25zdCB7CiAgICAJY29uc3QgYXV0byBjID0gdG9fdmVjdG9yKCksIHUgPSBiLmZpcnN0LWZpcnN0LCB2ID0gYi5zZWNvbmQtc2Vjb25kOwogICAgCWNvbnN0IGF1dG8gYzEgPSBjcm9zc19wcm9kdWN0KHUsYyksIGMyID0gY3Jvc3NfcHJvZHVjdCh2LGMpOwogICAgCXJldHVybiAoYzEqYi5zZWNvbmQtYzIqYi5maXJzdCkvKGMyLWMxKTsgfSB9OwoKaW50IG1haW4oKSB7ICAKIAogICAgaW50IG47IGxkYmwgeDsgdmVjdG9yPGNwPiB2OwogICAgCiAgICBjaW4gPj4gbiwgdi5yZXNpemUobik7CiAgIAogICAgbG9vcChpLG4pCiAgICAgICAgY2luID4+IHZbaV07CiAgICAgICAgCiAgICBzb3J0KHYuYmVnaW4oKSx2LmVuZCgpKTsgICAKICAgIAogICAgbG9vcChpLG4pCiAgICAgICAgY291dCA8PCB2W2ldIDw8ICcgJzsgfQogICAgICAgIA==