Help me in solving GCDLM problem

My issue

lets take two number with gcd as G, then we can represent two number as Ga, Gb (a<b)
In First Iteration : Alice will choose the bigger number (Gb) and replace it with G
In Second Iteration : LCM OF (G
a, G) will be Ga so he will replace the same number , so no difference
In Third Iteration : GCD will be G and G
a will replace by G
and both number will become same hence we should return 2G as sum
Can anyone tell me why this logic doesnt work
int a,b,k; cin>>a>>b>>k;
int gcd_ab= gcd(a,b);
// cout<<gcd_ab<<endl;
int ans= min(a,b)+gcd_ab;
if(k>2) ans=2
gcd_ab;
cout<<ans<<endl;

My code

#include<bits/stdc++.h>
//INT_MIN
//INT_MAX
using namespace std;
#define int long long
void pre_io(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);cout.tie(NULL);
}

int gcd(int a, int b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}
void solve(){
    
    int a,b,k; cin>>a>>b>>k;
    int gcd_ab= gcd(a,b);
    // cout<<gcd_ab<<endl;
    int ans= min(a,b)+gcd_ab;
    if(k>2) ans=2*gcd_ab;
    cout<<ans<<endl;
    
}
int32_t main(){
pre_io();
    // freopen("input.txt","r",stdin); 
    // freopen("output.txt","w",stdout);
    int t; cin>>t;
    while(t--) 
    solve();
return 0;
}

Problem Link: GCDLM Problem - CodeChef

@rajnishism
if(k>=2)
2*gcd_ab
cozz in one operation both alice and bob are performing their operation.