typedef struct test
{
    int a;
    int b;
} test;

int f1(test* p1, test* p2)
{
    int i1a = p1->a;
    int i1b = p1->b;
    int i2a = p2->a;
    int i2b = p2->b;
    if (i1a < i2a)
        return -1;
    if (i1a > i2a)
        return 1;
    if (i1b < i2b)
        return -1;
    if (i1b > i2b)
        return 1;
    return 0;
}

int f2(test* p1, test* p2)
{
    int i1a = p1->a;
    int i2a = p2->a;
    if (i1a < i2a)
        return -1;
    if (i1a > i2a)
        return 1;
    int i1b = p1->b;
    int i2b = p2->b;
    if (i1b < i2b)
        return -1;
    if (i1b > i2b)
        return 1;
    return 0;
}