/**
 *Code Author: harshv47
 *Institution: IIT(ISM)
**/

#include <bits/stdc++.h>
using namespace std;

/*
use these format of input when number of inputs not provided
while(scanf("%d",&n)!=EOF)
*/

#define fast ios::sync_with_stdio(false); cin.tie(0); cout.tie(0)
#define ll long long int
#define vi vector< ll >
#define vs vector<string>
#define vii vector< vi >
#define viii vector< vii >
#define pii pair< ll, ll >
#define vpii vector< pii >
#define mii map< ll , ll >
#define pq priority_queue
#define str string
#define len length()
#define siz size()
#define pb push_back
#define mp make_pair
#define ff first
#define ss second
#define nl cout <<  endl
#define ret return
#define cont continue
#define brk break
#define sps cout << " "
#define all(ar) ar.begin(), ar.end()
#define ini(X,Y) ll X; X=Y
#define inpx(X) ll X; cin >> X
#define inpxy(X, Y) ll X, Y; cin >> X >> Y
#define iter(arr,i) for(ll i=0; i<arr.size(); i++)
#define riter(arr,i) for(ll i=arr.size()-1; i>=0; i--)
#define itern(n,i) for(ll i=0; i<n; i++)
#define ritern(n,i) for(ll i=n-1; i>=0; i--)
#define sz(x) ((int)(x).size())
#define py 3.14159265358979323846  /* pi */
#define pi acos(1);       /* pi */
#define inf int(1e9+7);
//debugger
#define trace1(x)                cerr << #x << ": " << x << endl;
#define trace2(x, y)             cerr << #x << ": " << x << " | " << #y << ": " << y << endl;
#define trace3(x, y, z)          cerr << #x << ": " << x << " | " << #y << ": " << y << " | " << #z << ": " << z << endl;
#define trace4(a, b, c, d)       cerr << #a << ": " << a << " | " << #b << ": " << b << " | " << #c << ": " << c << " | " << #d << ": " << d << endl;
#define trace5(a, b, c, d, e)    cerr << #a << ": " << a << " | " << #b << ": " << b << " | " << #c << ": " << c << " | " << #d << ": " << d << " | " << #e << ": " << e << endl;
#define trace6(a, b, c, d, e, f) cerr << #a << ": " << a << " | " << #b << ": " << b << " | " << #c << ": " << c << " | " << #d << ": " << d << " | " << #e << ": " << e << " | " << #f << ": " << f << endl;

//max functions
ll max3(ll a, ll b, ll c)
{
    return (max(a,max(b,c)));
}
ll max4(ll a, ll b, ll c, ll d)
{
    return (max(a,max(b,max(c,d))));
}
ll max5(ll a, ll b, ll c, ll d, ll e)
{
    return (max(a,max(b,max(c,max(d,e)))));
}
//min functions
ll min3(ll a, ll b, ll c){
	return (min(a,min(b,c)));
}

//  Frequency of Characters
vi freq_char_s(string str){
    vi freq(26, 0);
    iter(str, i){
        freq[(int)str[i]-96] += 1;
    }
    return freq;
}
ll gcd(ll a, ll b) 
{ 
    if (b == 0) 
        return a; 
    return gcd(b, a % b); 
}
ll fact(ll n,ll r){
     if(n==r) return 1;
     if(r==1) return n;
     return fact(n-1,r) + fact(n-1,r-1);
}
bool isVowel(char c){
    if(c=='a' || c=='e' || c=='i' || c=='o' || c=='u'){
        return true;
    }
    return false;
}
/*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/


/*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/


int main(){
	fast;
    ll a,p;
    cin>>a>>p;
    p+=3*a;
    ll ap = p/2;
    cout<<ap;
}
 










Measured memory_bytes: 256