#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
struct Vector3D
{
float x,y,z;
};
bool operator < (const Vector3D& a, const Vector3D& b)
{
if (a.x < b.x) return true;
if (a.x > b.x) return false;
if (a.y < b.y) return true;
if (a.y > b.y) return false;
if (a.z < b.z) return true;
if (a.z > b.z) return false;
return false;
}
int main(int argc, char * argv[])
{
vector<Vector3D> v = {
{-0.5, -0.5, -0.5},
{0.0, -0.5, -0.5},
{0.5, -0.5, -0.5},
{0.5, -0.5, 0.0},
{0.5, -0.5, 0.5},
{0.0, -0.5, 0.5},
{-0.5, -0.5, 0.5},
{-0.5, -0.5, 0.0}
};
sort(v.begin(),v.end());
for(int i = 0; i < v.size(); ++i)
cout << v[i].x << " " << v[i].y << " " << v[i].z << endl;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBWZWN0b3IzRAp7CiAgIGZsb2F0IHgseSx6Owp9OwoKYm9vbCBvcGVyYXRvciA8IChjb25zdCBWZWN0b3IzRCYgYSwgY29uc3QgVmVjdG9yM0QmIGIpCnsKICAgIGlmIChhLnggPCBiLngpIHJldHVybiB0cnVlOwogICAgaWYgKGEueCA+IGIueCkgcmV0dXJuIGZhbHNlOwoKICAgIGlmIChhLnkgPCBiLnkpIHJldHVybiB0cnVlOwogICAgaWYgKGEueSA+IGIueSkgcmV0dXJuIGZhbHNlOwoKICAgIGlmIChhLnogPCBiLnopIHJldHVybiB0cnVlOwogICAgaWYgKGEueiA+IGIueikgcmV0dXJuIGZhbHNlOwoKICAgIHJldHVybiBmYWxzZTsKfQoKCmludCBtYWluKGludCBhcmdjLCBjaGFyICogYXJndltdKQp7CgogICAgdmVjdG9yPFZlY3RvcjNEPiB2ID0gewogICAgICAgIHstMC41LCAtMC41LCAtMC41fSwKICAgICAgICB7MC4wLCAtMC41LCAtMC41fSwKICAgICAgICB7MC41LCAtMC41LCAtMC41fSwKCiAgICAgICAgezAuNSwgLTAuNSwgMC4wfSwKICAgICAgICB7MC41LCAtMC41LCAwLjV9LAogICAgICAgIHswLjAsIC0wLjUsIDAuNX0sCgogICAgICAgIHstMC41LCAtMC41LCAwLjV9LAogICAgICAgIHstMC41LCAtMC41LCAwLjB9CiAgICB9OwoKICAgIHNvcnQodi5iZWdpbigpLHYuZW5kKCkpOwoKICAgIGZvcihpbnQgaSA9IDA7IGkgPCB2LnNpemUoKTsgKytpKQogICAgICAgIGNvdXQgPDwgdltpXS54IDw8ICIgICIgPDwgdltpXS55IDw8ICIgICIgPDwgdltpXS56IDw8IGVuZGw7Cgp9Cg==