# import bisect
# from collections import Counter, defaultdict, deque
# import copy
# from heapq import heappush, heappop, heapify
# from fractions import gcd
# import itertools
# from operator import attrgetter, itemgetter
# import math

import sys

# import numpy as np

ipti = sys.stdin.readline
MOD = 10 ** 9 + 7
INF = float('INF')
sys.setrecursionlimit(10 ** 5)

def main():
    a, p =list(map(int,ipti().split()))
    p += a*3
    print(p//2)

if __name__ == '__main__':
    main() import sys sys ipti = sys.stdin.readline ipti sys.stdin.readline sys.stdin sys stdin readline MOD = 10 ** 9 + 7 MOD 10 ** 9 + 7 10 ** 9 10 9 7 INF = float('INF') INF float('INF') float 'INF' sys.setrecursionlimit(10 ** 5) sys.setrecursionlimit sys setrecursionlimit 10 ** 5 10 5 def main():
    a, p =list(map(int,ipti().split()))
    p += a*3
    print(p//2) main a, p =list(map(int,ipti().split())) a list(map(int,ipti().split())) list map(int,ipti().split()) map int ipti().split() ().split () ipti split p p += a*3 p a*3 a 3 print(p//2) print p//2 p 2 if __name__ == '__main__':
    main() __name__ == '__main__' __name__ '__main__' main() main def main():
    a, p =list(map(int,ipti().split()))
    p += a*3
    print(p//2) def main():
    a, p =list(map(int,ipti().split()))
    p += a*3
    print(p//2) main ipti = sys.stdin.readline sys.stdin.readline ipti MOD = 10 ** 9 + 7 10 ** 9 + 7 MOD INF = float('INF') float('INF') INF
# import bisect
# from collections import Counter, defaultdict, deque
# import copy
# from heapq import heappush, heappop, heapify
# from fractions import gcd
# import itertools
# from operator import attrgetter, itemgetter
# import math

import sys

# import numpy as np

ipti = sys.stdin.readline
MOD = 10 ** 9 + 7
INF = float('INF')
sys.setrecursionlimit(10 ** 5)

def main():
    a, p =list(map(int,ipti().split()))
    p += a*3
    print(p//2)

if __name__ == '__main__':
    main()