#line 1 "verify/util/LC_many_aplusb.test.cpp"
#define PROBLEM "https://judge.yosupo.jp/problem/many_aplusb"
#line 2 "template/template.hpp"
// repo: https://github.com/kumacs/library-cpp
// docs: https://kumacs.github.io/library-cpp
#include <bits/stdc++.h>
using namespace std ;
#line 2 "template/macro.hpp"
#define rep(i, a, b) for (int i = (a); i < (int)(b); i++)
#define rrep(i, a, b) for (int i = (int)(b) - 1; i >= (a); i--)
#define ALL(v) (v).begin(), (v).end()
#define UNIQUE(v) sort(ALL(v)), (v).erase(unique(ALL(v)), (v).end())
#define SZ(v) (int)v.size()
#define MIN(v) *min_element(ALL(v))
#define MAX(v) *max_element(ALL(v))
#define LB(v, x) int(lower_bound(ALL(v), (x)) - (v).begin())
#define UB(v, x) int(upper_bound(ALL(v), (x)) - (v).begin())
#define YN(b) cout << ((b) ? "YES" : "NO") << "\n";
#define Yn(b) cout << ((b) ? "Yes" : "No") << "\n";
#define yn(b) cout << ((b) ? "yes" : "no") << "\n";
#line 10 "template/template.hpp"
#line 2 "template/util.hpp"
using uint = unsigned int ;
using ll = long long int ;
using ull = unsigned long long ;
using i128 = __int128_t ;
using u128 = __uint128_t ;
template < class T >
using priority_queue_asc = priority_queue < T , vector < T > , greater < T >> ;
template < class T , class S = T >
S SUM ( const vector < T >& a ) {
return accumulate ( ALL ( a ), S ( 0 ));
}
template < class T1 , class T2 >
inline bool chmin ( T1 & a , T2 b ) {
if ( a > b ) {
a = b ;
return true ;
}
return false ;
}
template < class T1 , class T2 >
inline bool chmax ( T1 & a , T2 b ) {
if ( a < b ) {
a = b ;
return true ;
}
return false ;
}
template < class T1 , class T2 >
inline bool chmin_opt ( optional < T1 >& a , T2 b ) {
if ( ! a || a > b ) {
a = b ;
return true ;
}
return false ;
}
template < class T1 , class T2 >
inline bool chmax_opt ( optional < T1 >& a , T2 b ) {
if ( ! a || a < b ) {
a = b ;
return true ;
}
return false ;
}
template < class T >
int popcnt ( T x ) {
return __builtin_popcountll ( x );
}
template < class T >
int topbit ( T x ) {
return ( x == 0 ? - 1 : 63 - __builtin_clzll ( x ));
}
template < class T >
int lowbit ( T x ) {
return ( x == 0 ? - 1 : __builtin_ctzll ( x ));
}
#line 12 "template/template.hpp"
#line 2 "template/inout.hpp"
struct Fast {
Fast () {
cin . tie ( nullptr );
ios_base :: sync_with_stdio ( false );
cout << fixed << setprecision ( 15 );
}
} fast ;
ostream & operator << ( ostream & os , __uint128_t x ) {
char buf [ 40 ];
size_t k = 0 ;
while ( x > 0 ) buf [ k ++ ] = ( char )( x % 10 + '0' ), x /= 10 ;
if ( k == 0 ) buf [ k ++ ] = '0' ;
while ( k ) os << buf [ -- k ];
return os ;
}
ostream & operator << ( ostream & os , __int128_t x ) {
return x < 0 ? ( os << '-' << ( __uint128_t )( - x )) : ( os << ( __uint128_t ) x );
}
template < class T , size_t N >
ostream & operator << ( ostream & os , const array < T , N >& a );
template < class T1 , class T2 >
istream & operator >> ( istream & is , pair < T1 , T2 >& p ) {
return is >> p . first >> p . second ;
}
template < class T1 , class T2 >
ostream & operator << ( ostream & os , const pair < T1 , T2 >& p ) {
return os << p . first << " " << p . second ;
}
template < class T >
istream & operator >> ( istream & is , vector < T >& a ) {
for ( auto & v : a ) is >> v ;
return is ;
}
template < class T >
ostream & operator << ( ostream & os , const vector < T >& a ) {
for ( auto it = a . begin (); it != a . end ();) {
os << * it ;
if ( ++ it != a . end ()) os << " " ;
}
return os ;
}
template < class T , size_t N >
ostream & operator << ( ostream & os , const array < T , N >& a ) {
for ( auto it = a . begin (); it != a . end ();) {
os << * it ;
if ( ++ it != a . end ()) os << " " ;
}
return os ;
}
template < class T >
ostream & operator << ( ostream & os , const set < T >& st ) {
os << "{" ;
for ( auto it = st . begin (); it != st . end ();) {
os << * it ;
if ( ++ it != st . end ()) os << "," ;
}
os << "}" ;
return os ;
}
template < class T1 , class T2 >
ostream & operator << ( ostream & os , const map < T1 , T2 >& mp ) {
os << "{" ;
for ( auto it = mp . begin (); it != mp . end ();) {
os << it -> first << ":" << it -> second ;
if ( ++ it != mp . end ()) os << "," ;
}
os << "}" ;
return os ;
}
void in () {}
template < typename T , class ... U >
void in ( T & t , U & ... u ) {
cin >> t ;
in ( u ...);
}
template < class ... T >
void in_zip ( int n , T & ... t ) {
assert ( n >= 0 && (( size ( t ) >= static_cast < size_t > ( n )) && ...));
for ( int i = 0 ; i < n ; i ++ ) in ( t [ i ]...);
}
void out () { cout << " \n " ; }
template < typename T , class ... U , char sep = ' ' >
void out ( const T & t , const U & ... u ) {
cout << t ;
if ( sizeof ...( u )) cout << sep ;
out ( u ...);
}
template < class T , class U >
void out_opt ( const optional < T >& opt , const U & fallback , ostream & os = cout ) {
if ( opt . has_value ())
os << opt . value ();
else
os << fallback ;
os << " \n " ;
}
template < class T , class U >
void out_opt ( const vector < optional < T >>& vec , const U & fallback , ostream & os = cout ) {
for ( auto it = vec . begin (); it != vec . end ();) {
if (( * it ). has_value ())
os << ( * it ). value ();
else
os << fallback ;
if ( ++ it != vec . end ()) os << " " ;
}
os << " \n " ;
}
namespace IO {
template < class T , class ... U >
T read ( U && ... u ) {
T t = T ( forward < U > ( u )...);
in ( t );
return t ;
}
namespace Graph {
vector < vector < int >> unweighted ( int n , int m , bool directed = false , int offset = 1 ) {
vector < vector < int >> g ( n );
for ( int i = 0 ; i < m ; i ++ ) {
int u , v ;
cin >> u >> v ;
u -= offset , v -= offset ;
g [ u ]. push_back ( v );
if ( ! directed ) g [ v ]. push_back ( u );
}
return g ;
}
template < class T >
vector < vector < pair < int , T >>> weighted ( int n , int m , bool directed = false , int offset = 1 ) {
vector < vector < pair < int , T >>> g ( n );
for ( int i = 0 ; i < m ; i ++ ) {
int u , v ;
T w ;
cin >> u >> v >> w ;
u -= offset , v -= offset ;
g [ u ]. push_back ({ v , w });
if ( ! directed ) g [ v ]. push_back ({ u , w });
}
return g ;
}
} // namespace Graph
namespace Tree {
vector < vector < int >> unweighted ( int n , bool directed = false , int offset = 1 ) {
return Graph :: unweighted ( n , n - 1 , directed , offset );
}
template < class T >
vector < vector < pair < int , T >>> weighted ( int n , bool directed = false , int offset = 1 ) {
return Graph :: weighted < T > ( n , n - 1 , directed , offset );
}
vector < vector < int >> rooted ( int n , bool to_root = true , bool to_leaf = true , int offset = 1 ) {
vector < vector < int >> g ( n );
for ( int i = 1 ; i < n ; i ++ ) {
int p ;
cin >> p ;
p -= offset ;
if ( to_root ) g [ i ]. push_back ( p );
if ( to_leaf ) g [ p ]. push_back ( i );
}
return g ;
}
} // namespace Tree
} // namespace IO
#line 14 "template/template.hpp"
#line 2 "template/debug.hpp"
#ifdef LOCAL
#define debug 1
#define show(...) _show(0, #__VA_ARGS__, __VA_ARGS__)
#else
#define debug 0
#define show(...) true
#endif
template < class T >
void _show ( int , T ) {
cerr << '\n' ;
}
template < class T1 , class T2 , class ... T3 >
void _show ( int i , const T1 & a , const T2 & b , const T3 & ... c ) {
for (; a [ i ] != ',' && a [ i ] != '\0' ; i ++ ) cerr << a [ i ];
cerr << ":" << b << " " ;
_show ( i + 1 , a , c ...);
}
#line 2 "util/fastio.hpp"
namespace FastIO {
static constexpr unsigned int BUF_SIZE = 1 << 20 ;
struct InStream {
private:
using IS = InStream ;
inline static unsigned int l = 0 , r = 0 ;
inline static char buf [ BUF_SIZE ];
inline void load () {
memmove ( buf , buf + l , r - l );
r = r - l + fread ( buf + r - l , 1 , BUF_SIZE - r + l , stdin );
l = 0 ;
if ( r < BUF_SIZE ) buf [ r ++ ] = '\n' ;
}
static bool isSpace ( char c ) { return c == ' ' || ( '\t' <= c && c <= '\r' ); }
public:
char seekChar () {
if ( l >= r ) load ();
return buf [ l ];
}
void skipSpace () {
while ( isSpace ( seekChar ())) l ++ ;
}
template < class T >
T readUInteger () {
T x = 0 ;
skipSpace ();
if ( r - l < 100 ) load ();
while ( true ) {
char c = buf [ l ];
if ( '9' < c || c < '0' ) break ;
x = x * 10 + ( c - '0' );
l ++ ;
}
return x ;
}
template < class T >
T readInteger () {
T x = 0 ;
skipSpace ();
if ( r - l < 100 ) load ();
bool is_negative = seekChar () == '-' ;
if ( is_negative ) {
l ++ ;
while ( true ) {
char c = buf [ l ];
if ( '9' < c || c < '0' ) break ;
x = x * 10 - ( c - '0' );
l ++ ;
}
} else {
while ( true ) {
char c = buf [ l ];
if ( '9' < c || c < '0' ) break ;
x = x * 10 + ( c - '0' );
l ++ ;
}
}
return x ;
}
char readChar () {
skipSpace ();
char c = seekChar ();
l ++ ;
return c ;
}
std :: string readString () {
std :: string s ;
skipSpace ();
while ( true ) {
char c = seekChar ();
if ( isSpace ( c ) || c == '\0' ) break ;
s . push_back ( c );
l ++ ;
}
return s ;
}
IS & operator >> ( unsigned int & x ) { x = readUInteger < unsigned int > (); return * this ; }
IS & operator >> ( int & x ) { x = readInteger < int > (); return * this ; }
IS & operator >> ( unsigned long long & x ) { x = readUInteger < unsigned long long > (); return * this ; }
IS & operator >> ( long long & x ) { x = readInteger < long long > (); return * this ; }
IS & operator >> ( char & c ) { c = readChar (); return * this ; }
IS & operator >> ( std :: string & s ) { s = readString (); return * this ; }
};
struct OutputTable {
char num [ 10000 ][ 4 ];
constexpr OutputTable () : num () {
for ( int i = 0 ; i < 10000 ; i ++ ) {
num [ i ][ 0 ] = '0' + i / 1000 % 10 ;
num [ i ][ 1 ] = '0' + i / 100 % 10 ;
num [ i ][ 2 ] = '0' + i / 10 % 10 ;
num [ i ][ 3 ] = '0' + i / 1 % 10 ;
}
}
} constexpr table ;
struct OutStream {
private:
using OS = OutStream ;
inline static unsigned int p = 0 ;
inline static char buf [ BUF_SIZE ];
static constexpr uint32_t P10 ( unsigned int d ) { return d ? P10 ( d - 1 ) * 10 : 1 ; }
static constexpr uint64_t P10L ( unsigned int d ) { return d ? P10L ( d - 1 ) * 10 : 1 ; }
template < class T , class U > static void Split ( T & x , U & y , U z ) noexcept { x = y / z ; y -= x * z ; }
void ensureOutput ( unsigned int d ) { if ( p + d > BUF_SIZE ) flush (); }
void writeNum ( uint32_t x ) {
memcpy ( buf + p , table . num [ x ], 4 );
p += 4 ;
}
void writeNumHead ( uint32_t x ) {
const char * s = table . num [ x ];
if ( x >= 1000 ) buf [ p ++ ] = s [ 0 ];
if ( x >= 100 ) buf [ p ++ ] = s [ 1 ];
if ( x >= 10 ) buf [ p ++ ] = s [ 2 ];
buf [ p ++ ] = s [ 3 ];
}
void writeU32Unchecked ( uint32_t x ) {
unsigned int y = 0 ;
if ( x >= P10 ( 8 )) {
Split ( y , x , P10 ( 8 )); writeNumHead ( y );
Split ( y , x , P10 ( 4 )); writeNum ( y );
writeNum ( x );
} else if ( x >= P10 ( 4 )) {
Split ( y , x , P10 ( 4 )); writeNumHead ( y );
writeNum ( x );
} else if ( x > 0 ) {
writeNumHead ( x );
} else {
write ( '0' );
}
}
void writeU64Unchecked ( uint64_t x ) {
unsigned int y = 0 ;
if ( x >= P10L ( 16 )) {
Split ( y , x , P10L ( 16 )); writeNumHead ( y );
Split ( y , x , P10L ( 12 )); writeNum ( y );
Split ( y , x , P10L ( 8 )); writeNum ( y );
Split ( y , x , P10L ( 4 )); writeNum ( y );
writeNum ( x );
} else if ( x >= P10L ( 12 )) {
Split ( y , x , P10L ( 12 )); writeNumHead ( y );
Split ( y , x , P10L ( 8 )); writeNum ( y );
Split ( y , x , P10L ( 4 )); writeNum ( y );
writeNum ( x );
} else if ( x >= P10L ( 8 )) {
Split ( y , x , P10L ( 8 )); writeNumHead ( y );
Split ( y , x , P10L ( 4 )); writeNum ( y );
writeNum ( x );
} else if ( x >= P10L ( 4 )) {
Split ( y , x , P10L ( 4 )); writeNumHead ( y );
writeNum ( x );
} else if ( x > 0 ) {
writeNumHead ( x );
} else {
write ( '0' );
}
}
public:
~ OutStream (){ flush (); }
void flush () {
fwrite ( buf , 1 , p , stdout );
p = 0 ;
}
void write ( const char c ) {
if ( p == BUF_SIZE ) flush ();
buf [ p ++ ] = c ;
}
void write ( const char * s ) { while ( * s ) write ( * ( s ++ )); }
void write ( const std :: string & s ) { for ( char c : s ) write ( c ); }
void writeU32 ( uint32_t x ) {
ensureOutput ( 10 );
writeU32Unchecked ( x );
}
void writeI32 ( int32_t x ) {
ensureOutput ( 11 );
if ( x < 0 ) { write ( '-' ); writeU32Unchecked ( uint32_t ( 0 ) - static_cast < uint32_t > ( x )); }
else writeU32Unchecked (( uint32_t ) x );
}
void writeU64 ( uint64_t x ) {
ensureOutput ( 20 );
writeU64Unchecked ( x );
}
void writeI64 ( int64_t x ) {
ensureOutput ( 21 );
if ( x < 0 ) { write ( '-' ); writeU64Unchecked ( uint64_t ( 0 ) - static_cast < uint64_t > ( x )); }
else writeU64Unchecked (( uint64_t ) x );
}
OS & operator << ( unsigned int x ) { writeU32 ( x ); return * this ; }
OS & operator << ( int x ) { writeI32 ( x ); return * this ; }
OS & operator << ( unsigned long long x ) { writeU64 ( x ); return * this ; }
OS & operator << ( long long x ) { writeI64 ( x ); return * this ; }
OS & operator << ( const std :: string & s ) { write ( s ); return * this ; }
OS & operator << ( const char * s ) { write ( s ); return * this ; }
OS & operator << ( char c ) { write ( c ); return * this ; }
};
}; // namespace FastIO
#line 5 "verify/util/LC_many_aplusb.test.cpp"
FastIO :: InStream is ;
FastIO :: OutStream os ;
int main () {
unsigned int t ;
is >> t ;
while ( t -- ) {
unsigned long long a , b ;
is >> a >> b ;
os << ( a + b ) << '\n' ;
}
}