#include <iostream>
using namespace std;
typedef long long ll;
int main() {
int T;
cin >> T;
while (T--) {
ll d, m;
cin >> d >> m;
ll ans = 1;
for (int i = 0; i < 32; i++) {
if (d < (1 << i)) break;
ans = (ans * (min(d, (1LL << (i + 1)) - 1) - (1LL << i) + 2)) % m;
}
ans = (ans - 1 + m) % m;
cout << ans << endl;
}
}
46A - Ball Game | 114A - Cifera |
776A - A Serial Killer | 25B - Phone numbers |
1633C - Kill the Monster | 1611A - Make Even |
1030B - Vasya and Cornfield | 1631A - Min Max Swap |
1296B - Food Buying | 133A - HQ9+ |
1650D - Twist the Permutation | 1209A - Paint the Numbers |
1234A - Equalize Prices Again | 1613A - Long Comparison |
1624B - Make AP | 660B - Seating On Bus |
405A - Gravity Flip | 499B - Lecture |
709A - Juicer | 1358C - Celex Update |
1466B - Last minute enhancements | 450B - Jzzhu and Sequences |
1582C - Grandma Capa Knits a Scarf | 492A - Vanya and Cubes |
217A - Ice Skating | 270A - Fancy Fence |
181A - Series of Crimes | 1638A - Reverse |
1654C - Alice and the Cake | 369A - Valera and Plates |