LASTDIG

Nestor was doing the work of his math class about three days but he is tired of make operations a lot and he should deliver his task tomorrow. His math’s teacher gives two numbers a and b. The problem consist in find the last digit of the potency of base a and index b. Help Nestor with his problem. You are given two integer numbers: the base a (0 <= a <= 20) and the index b (0 <= b <= 2,147,483,000), a and b both are not 0. You have to find the last digit of a^b.

Input

The first line of input contains an integer t, the number of test cases (t <= 30). t test cases follow. For each test case will appear a and b separated by space.

Output

For each test case output an integer per line representing the result.

Example

Input:
2
3 10
6 2

Output:
9
6


#include <iostream>
#include <vector>

using namespace std;

long long mod(long long a, long long b) {  
    return (a % b < 0 ? a % b + b : a % b);
}

int powMod10(long long a, long long b) {  
    if (b == 0) {
        return 1;
    } else if (a == 0) {
        return 0;
    } else {
        vector <long long> powers;
        powers.push_back(a%10);

        do {
            powers.push_back((powers.back()*(a%10))%10);
        } while(powers.back() != powers.front());

        int cycleSize = powers.size() - 1;
        return powers[mod((b-1),cycleSize)];
    }
    return 0;
}

int main() {  
    int t;
    cin >> t;

    for (;t--;) {
        long long a, b;
        cin >> a >> b;
        cout << powMod10(a, b) << "\n";
    }
    return 0;
}