#include <bits/stdc++.h>
#define pb push_back
#define boolean bool
#define int long long
#define var int
using namespace std;
vector<vector<int>> adj;
bool vis[100005];
int depth[100005];
int par[100001];
vector<int> primes;
int xx=pow(2,32);
void sieve(int limit) {
 
  vector<int> bools;
  for (var i = 1; i < limit; i++) { bools.pb(true); } 

  for (var i = 2; i < limit; i++) {
    if (bools[i-2]) {
      for (var j = i*2; j <= limit; j += i) {
        bools[j-2] = false;    
      }
    }
  }
  
  for (var p = 0; p < bools.size(); p++) {
    if (bools[p]) { primes.pb(p+2); }
  }
  
} 
void solve()
{
    int n;
    cin >> n;
    int ans=0;
  if(n==1)
  {
      ans=0;
  }
  else if(n==2)
  {
      ans=1;
  }
  else if((n%2==0 && n!=2) || n==3)
  {
      ans=2;
  }
  else
  {
      ans=3;
  }
  cout << ans << endl;
  
}
signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
   // sieve(1000001);
    int t;
    cin >> t;
    while(t--)
	solve();
	
}