a:6:{i:0;s:23132:"				<div class="h1"><h1>Mediterranean Voyage - Summer 2016 Tour</h1></div>
				<p class="breadcrumb ar uu small"><a href="http://www.grandindiatrip.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="http://www.grandindiatrip.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Mediterranean Voyage - Summer 2016 Tour</p>
				<br />
				
								
						<script language="javascript"> 
							function topDestinationToggle(showHideDiv, switchTextDiv) {
							var ele = document.getElementById(showHideDiv);
							var text = document.getElementById(switchTextDiv);
							if(ele.style.display == "block") {
								ele.style.display = "none";
							  text.innerHTML = "View More &#9660;";
							}
							else {
							  ele.style.display = "block";
							  text.innerHTML = "View Less &#9650;";
							}
							}
		                </script>
											<script type="text/javascript">			
					(function($){	
					  $(function(){
						$('[id^=detailslider]').each(function(){
							$(this).DG_Slider({
								auto: true, mode:'fade', pager:true, pagerType:'short',controls:true
							});
						})
				
						$('a[rel=gall]').fancybox()
					  });	
					}(jQuery))
					</script>
					
					<br />
					<div class="data">
					<table class="w100 formTable bdr0 imgWidth">
					<tr>
					<td class="p10px">
					<table class="w100 packageForm">
											<tr>
						<td class="b p5px w125px vat">Tour Code </td>
						<td class="p5px pl0px vat">Duniya Dekho - Europ</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						7 Nights / 8 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Barcelona, Naples, Rome, Olbia, Livorno, Toulon</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 108595 Per Person						</td>
						</tr>
												<tr>
						<td class="b p5px dif w125px vat">Special Offer </td>
						<td class="p5px pl0px dif vat">Guided panoramic Highlight City Tour of Rome : Arch of Constantine, Piazza Venezia, Circus Maximus, Roman Forum, Trevi Fountain, Colosseum.<br />
Hotels Info<br />
<br />
City	Hotel Name<br />
Onboard Cruise	<br />
Breeze Of The Mediterranean Cruise Or Similar</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.grandindiatrip.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Mediterranean Voyage - Summer 2016 Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="62294"/>
						</form>
						</p>
						</td>
						</tr>
											</table>
					</td>
											<td class="p10px vat imgWidth150 w150px lh0">
						<div class="demo-wrap">
						<ul class="lsn m0px p0px" >
															<li class="bdr bw3px c5px p1px"><div class="dt"><p class="ac vam dtc w150px h150px"><a rel="gall" data-fancybox="showZoomImage" href="https://ttw.wlimg.com/package-images/photo-big/dir_9/257644/116402.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/257644/116402.jpg"  width="150" height="150"    alt="Mediterranean Voyage - Summer 2016 Tour" title="Mediterranean Voyage - Summer 2016 Tour" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Enjoy a vacation which is more than a cruise, a captivating adventure unlike any other. A rich mosaic of sights, from the sun-washed beaches of the Riviera to the magnificent antiquities of Rome. Relax and have fun as you sail to a mix of destinations with the loveliest features. It's a complete holiday.<br />
<br />
All 'must see' sights covered.<br />
Easy Travelling, Smooth Sailing - On a Cox & Kings holiday you can just relax and we'll take care of everything.<br />
First Class Service - From location, service, to ambience, every detail is looked into, to ensure that your stay is an enjoyable one.<br />
Great Meals - Stimulate your palate with a wide array of Indian dishes carefully selected and flavoured with authentic ingredients and spices.<br />
Sightseeing That Takes Your Breath Away - Enjoy the scenic journey through Europe with its ever changing landscape - from bustling cosmopolitan cities to tranquil lakes and alpine mountains. We offer a terrific holiday value that's impossible to match!<br />
Fabulous Optionals, Great Prices - You can design the holidays of your choice from the plethora of options before you.<br />
Enjoy the Ocean: If watching the sea is relaxing, imagine doing so from a Jacuzzi.<br />
Get Fit Onboard: You can do as much exercise as you want in the fitness facilities.<br />
Spectacular Nights: Every night on a Pullmantur Cruise is a spectacular one with musicals, live music and theme parties in the Broadway Theatre.<br />
Cuisine: An excellent cruise is inconceivable without excellent cuisine. The quality of the ingredients is essential for everything to turn out perfectly.<br />
Spa del Mar: There is a Spa del Mar onboard every Pullmantur ship with a professional staff.Guided panoramic Highlight City Tour of Rome : Arch of Constantine, Piazza Venezia, Circus Maximus, Roman Forum, Trevi Fountain, Colosseum.<br />
Hotels Info<br />
<br />
City	Hotel Name<br />
Onboard Cruise	<br />
Breeze Of The Mediterranean Cruise Or SimilarServices of Cox & Kings Tour Manager or Local Representative.<br />
An additional amount of INR 1,500 is to be compulsorily paid by way of "Secure your Booking Amount".<br />
Optional & Add-On tours unless mentioned otherwise.<br />
Cost of US $ 2,50,000 granted by the Reserve Bank of India under the Liberalised Remittance Scheme.<br />
Any increase in the airfare / taxes / routing charged by the airlines for ticket (presently calculated on 14th Aug 2015)<br />
Airline and Hotel surcharges (if applicable) during high / festive season to be paid extra per person.<br />
Cost of extension of validity or deviation of your air ticket.<br />
Any increase in Rate of Euro leading to an increase in Tour Cost coming into effect prior to departure. However, the rate prevailing on the given day of payment will apply.<br />
Porterage at hotels, apartment, airports and seaports, tips, laundry, wines, mineral water, telephone charges, all items of personal nature and also food and drinks not forming part of the touring group's menu.<br />
Medical test and Premium cost of your Overseas Travel Insurance policy valid for passengers above 70 years of age.<br />
Anything not specifically mentioned in 'What Your Tour Price Includes' box.<br />
Government Service Tax 4.50% on gross bill, effective from 1st June 2016.<br />
Port Handling charges of Euro 190 per person.<br />
Gratuities / Administration and Service Fee (To be paid directly on board the cruise15-0630-09<br />						<div class="headHr">
			            <p class="p7px b pl10px xlarge">Tour Itinerary</p>
			            </div>
			            
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 1:</b> Arrive Rome
								</p>
								<p class="aj">Drive to Rome for a short visit to the "Eternal City". The truth of the oft quoted adage 'Rome was not built in a day'- hits you with full force, as we pack in all the 'must see' agenda into our guided panoramic highlight city tour!<br />
According to legend, Rome was founded by Romulus and Remus in 753 BC.<br />
Start your guided introduction to Rome with a visit to the famous Trevi Fountain (under renovation). Legend has it, that if you make a wish and toss a coin over your left shoulder into the fountain, you are sure to return to Rome! We at Cox & Kings look forward to that!<br />
Pay tribute to the brave Gladiators of Rome, with a photo stop at the mighty Colosseum. At this amphitheatre, the notorious and gory gladiatorial games were held, where they fought with one another and wild animals while the crowd roared!<br />
See the triumphal Arch of Constantine, one of the most important commemorative monuments of antiquity and then drive through Piazza Venezia, the main square in Rome, where the grandiose monument to the reunification of Italy is often referred to as the Marble wedding cake!<br />
Pass the Circus Maximus - the Hippodrome - known for its ancient chariot races, which was reconstructed by Hollywood for 'Ben Hur' !<br />
Pass the ruins of the Roman Forum and end the tour with a journey to The Vatican the smallest nation in the world! It boasts a priceless art collection and is probably per square foot the richest country in the world! <br />
The most famous square of the Vatican is St. Peter's Square on which is situated the St. Peter's Basilica (visit when open to visitors), the spiritual centre of Christendom.<br />
After an exciting tour, relax as you drive to board your 8 day cruise (check in 1600 hrs). Once on board your cruise liner its non-stop fun.<br />
Note: Due to Rome city regulations, certain roads may be off limits for long distance coaches. This may result in the sightseeing being done partly by foot / public transport.<br />
Overnight onboard the cruise.</p>					
									<p><b>Meals : </b> Dinner on board the cruise.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 2:</b> Onto Livorno
								</p>
								<p class="aj">Today as your cruise docks in Livorno you can choose from the many shore excursions and book the excursions on your own at the cruise excursion desk.<br />
You also have the option of staying on board the cruise and enjoying the onboard facilities.<br />
Overnight onboard the cruise.<br />
Full Board on the cruise.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 3:</b> Onto Toulon
								</p>
								<p class="aj">In Toulon today book shore excursions on your own at the cruise excursion desk or stay and enjoy the onboard facilities.<br />
Overnight onboard the cruise.<br />
Full Board on the cruise.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 4:</b> Onto Barcelona
								</p>
								<p class="aj">Board your coach to enjoy the very best of Barcelona as you explore the Gothic Quarter and spend some free time shopping.<br />
First stop at the city's most well-known symbol, La Sagrada Familia, for a chance to take some photographs. Work began on the construction of this sanctuary of a thousand needles over 100 years ago and is still on-going today. Ever since the Barcelona Olympics in 1992, the temple has become an emblem of the city and an ecclesiastical tribute to its architect Antonio Gaudi.<br />
Continue on foot through the narrow streets of the medieval Gothic Quarter, with its incredible atmosphere and wealth of historic buildings. Visit the Gothic Cathedral which was built between 1298 and 1450 upon the remains of a Roman temple dedicated to Hercules and which has an interior adorned with columns and stained glass dating back to the middle ages.<br />
Admire some of the city's most important modernist buildings along Paseo de Gracia, the memorial to Christopher Columbus and the Plaza Cataluna.<br />
Your tour continues with a drive along Avenida de la Diagonal and Avenida de Josep Tarradellas.<br />
Climb to Montjuic, passing by the Stadium and Olympic Ring from the 1992 Barcelona Olympic Games.<br />
Re-board your coach to make your way back to the port.<br />
Overnight onboard the cruise.<br />
Full Board on the cruise.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 5:</b> At Sea
								</p>
								<p class="aj">Experience an endless array of activities on board from live music, theme parties and much more at the Broadway theatre. Take risks and feel the excitement of winning in the casino!<br />
You can start with American Roulette and move on to slot machines, video poker, match play and live sports sweepstakes. Relax with a refreshing dip in the swimming pool sipping a cool drink in an unbeatable setting. To relieve tension or stress or for pure pleasure, the Spa is the perfect place to relax. A visit to the Fitness Centre or a trip to the jogging track is also an option.<br />
The shopping area on the ship is worth visiting.<br />
At the end of the day enjoy the best dishes at the Grand Buffet. Make the most of these unique opportunities.<br />
Overnight onboard the cruise.<br />
Full Board on the cruise.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 6:</b> Onto Olbia
								</p>
								<p class="aj">Your choice of a shore excursion can be booked on your own at the cruise excursion desk or you can stay on the cruise and enjoy the onboard facilities.<br />
Overnight onboard the cruise.<br />
Full Board on the cruise.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 7:</b> Onto Naples
								</p>
								<p class="aj">Today when your cruise docks in Naples, book a shore excursion on your own at the cruise excursion desk or stay on board and enjoy the facilities.<br />
Overnight onboard the cruise.<br />
Full Board on the cruise.</p>
								</td>
								</tr>
								</table>					
								</div>
								<div class="data">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px vat">
								<p class="b large mb5px"><b class="dif">Day 8:</b> Homeward Bound
								</p>
								<p class="aj">Good times need never end! As you get ready for the airport and your flight back home,</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
												 <p class="headHr p7px b pl10px xlarge">Tour Detail</p>
			             <div class="data p15px aj">
										
						<p class="large b mb5px dif">Inclusions :</p>
						<ul>
															<li>Meals</li>
																		<li>Sightseeing</li>
																		<li>Transport</li>
																		<li>Transfers</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Services of Cox & Kings Tour Manager or Local Representative.</li><li>
An additional amount of INR 1,500 is to be compulsorily paid by way of "Secure your Booking Amount".</li><li>
Optional & Add-On tours unless mentioned otherwise.</li><li>
Cost of US $ 2,50,000 granted by the Reserve Bank of India under the Liberalised Remittance Scheme.</li><li>
Any increase in the airfare / taxes / routing charged by the airlines for ticket (presently calculated on 14th Aug 2015)</li><li>
Airline and Hotel surcharges (if applicable) during high / festive season to be paid extra per person.</li><li>
Cost of extension of validity or deviation of your air ticket.</li><li>
Any increase in Rate of Euro leading to an increase in Tour Cost coming into effect prior to departure. However, the rate prevailing on the given day of payment will apply.</li><li>
Porterage at hotels, apartment, airports and seaports, tips, laundry, wines, mineral water, telephone charges, all items of personal nature and also food and drinks not forming part of the touring group's menu.</li><li>
Medical test and Premium cost of your Overseas Travel Insurance policy valid for passengers above 70 years of age.</li><li>
Anything not specifically mentioned in 'What Your Tour Price Includes' box.</li><li>
Government Service Tax 4.50% on gross bill, effective from 1st June 2016.</li><li>
Port Handling charges of Euro 190 per person.</li><li>
Gratuities / Administration and Service Fee (To be paid directly on board the cruise</li></ul><br />
												<p class="large b mb5px dif">Specific Departure Dates :</p>You must be in possession of Schengen Multiple Entry visa. The cost of this visa is included in the Main Tour Price. It is compulsory to do the visas through Cox & Kings only. Visa fees are subject to revision by the consulates from time to time. In such a case additional charges may be applicable.<br />
SCHENGEN VISA<br />
1 Form.<br />
2 Photos (3.5 x 4.5 cm with white background glossy finish 70 to 80% face area visible).<br />
Covering letter on business letterhead.<br />
Company Registration Certificate of Indian Company / Company Memorandum of Understanding / Evidence of Partnership.<br />
Employers Leave sanction letter in original with date of joining designation & leave dates mentioned with company seal and name, designation of HR Officer and his signature.<br />
Pay slip for last 3 months.<br />
Passport is in maiden name then wedding card/marriage certificate/Wedding snaps.<br />
NOC letter on 100 Rs stamp paper from the Bridge parents with passport copy for signature verification.<br />
Return Ticket.<br />
Passenger complete contact details (Residential Tel No......).<br />
Day to day tour itinerary is mandatory hotel confirmation with the name of hotel address and telephone Number of hotel and pax check in and check out dates.<br />
Income Tax Challans of last 3 years.<br />
Updated personal bank statement for last 6 months with good bank balance at least Rs 2 lakhs after total tour payment with bank seal.<br />
If student School/ College bonafide certificate required.<br />
Overseas Mediclaim Policy.<br />
											
						<p class="large b mb5px dif">Terms &amp; Conditions :</p>* Some Advance Percentage of total booking amount 
* Airfare/Transport fare to be paid full at one time in advance.~^#^~* Upon cancellation, refund will be made after deducting the Retention Amount. 
* Retention Amount varies as per the number of days left before your package start date. ~^#^~						
    	<p class="h dif xlarge b mb5px">Package Cost Ex - Mumbai - Valid from 25th Nov, 2015 to 30th Sep, 2016</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="data p5px">Type</td>
				<td class="data p5px">Price</td>
			</tr>
			<tr>
				<td class="data p5px">Twin</td>
				<td class="data p5px">INR 1,07,575(EUR 560 + INR 62,999)</td>
			</tr>
			<tr>
				<td class="data p5px">Triple</td>
				<td class="data p5px">INR 1,07,575(EUR 560 + INR 62,999)</td>
			</tr>
			<tr>
				<td class="data p5px">Single</td>
				<td class="data p5px">INR 1,41,803(EUR 990 + INR 62,999)</td>
			</tr>
			<tr>
				<td class="data p5px">Child with bed</td>
				<td class="data p5px">INR 98,889(EUR 476 + INR 60,999)</td>
			</tr>
			<tr>
				<td class="data p5px">Child without bed</td>
				<td class="data p5px">INR 94,431(EUR 420 + INR 60,999)</td>
			</tr>
			<tr>
				<td class="data p5px">Infant</td>
				<td class="data p5px">INR 39,999(EUR + INR 39,999)</td>
			</tr>
		</table></div><br>
    	<p class="h dif xlarge b mb5px">Package Cost Ex - Delhi - Valid from 25th Nov, 2015 to 30th Sep, 2016</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="data p5px">Type</td>
				<td class="data p5px">Price</td>
			</tr>
			<tr>
				<td class="data p5px">Twin</td>
				<td class="data p5px">INR 1,10,575(EUR 560 + INR 65,999)</td>
			</tr>
			<tr>
				<td class="data p5px">Triple</td>
				<td class="data p5px">INR 1,10,575(EUR 560 + INR 65,999)</td>
			</tr>
			<tr>
				<td class="data p5px">Single</td>
				<td class="data p5px">INR 1,44,803(EUR 990 + INR 65,999)</td>
			</tr>
			<tr>
				<td class="data p5px">Child with bed</td>
				<td class="data p5px">INR 1,01,889(EUR 476 + INR 63,999)</td>
			</tr>
			<tr>
				<td class="data p5px">Child without bed</td>
				<td class="data p5px">INR 97,431(EUR 420 + INR 63,999)</td>
			</tr>
			<tr>
				<td class="data p5px">Infant</td>
				<td class="data p5px">INR 39,999(EUR + INR 39,999)</td>
			</tr>
		</table></div><br>
    	<p class="h dif xlarge b mb5px">Package Cost Ex - Kolkata - Valid from 25th Nov, 2015 to 30th Sep, 2016</p>
		<div class="dynamic-data-container">
    	<table class="bdrAll" width="100%" cellpadding="5">
			<tr>
				<td class="data p5px">Type</td>
				<td class="data p5px">Price</td>
			</tr>
			<tr>
				<td class="data p5px">Twin</td>
				<td class="data p5px">INR 1,17,575(EUR 560 + INR 72,999)</td>
			</tr>
			<tr>
				<td class="data p5px">Triple</td>
				<td class="data p5px">INR 1,17,575(EUR 560 + INR 72,999)</td>
			</tr>
			<tr>
				<td class="data p5px">Single</td>
				<td class="data p5px">INR 1,51,803(EUR 990 + INR 72,999)</td>
			</tr>
			<tr>
				<td class="data p5px">Child with bed</td>
				<td class="data p5px">INR 1,08,889(EUR 476 + INR 70,999)</td>
			</tr>
			<tr>
				<td class="data p5px">Child without bed</td>
				<td class="data p5px">INR 1,04,431(EUR 420 + INR 70,999)</td>
			</tr>
			<tr>
				<td class="data p5px">Infant</td>
				<td class="data p5px">INR 39,999(EUR + INR 39,999)</td>
			</tr>
		</table></div><br>						</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="http://www.grandindiatrip.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Mediterranean Voyage - Summer 2016 Tour - Tour Package"/>
						<input type="hidden" name="allocate_type" value="tour"/>
						<a href="#" onclick="document.getElementById('frmpackagedetail').submit();" class="button p7px pl12px pr12px c5px b large dib mt10px">Book Your Tour</a>
						<input type="hidden" name="pkg_slno" value="62294"/>
						</form>
						</div>
						
						";i:1;s:78:"Book Mediterranean Voyage - Summer 2016 Tour - 7 Nights / 8 Days Tour Packages";i:2;s:165:"book mediterranean voyage - summer 2016 tour - 7 nights / 8 days tour packages, heritage tour packages, barcelona, naples, rome, olbia, livorno, toulon tour packages";i:3;s:224:"Book Mediterranean Voyage - Summer 2016 Tour - 7 Nights / 8 Days tour packages from Grand India Tours & Travels - Get attractive 7 Nights / 8 Days Heritage  tour packages for  Barcelona, Naples, Rome, Olbia, Livorno, Toulon.";i:4;s:3768:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Barcelona, Naples, Rome, Olbia, Livorno, Toulon"        
		                 },
		      "description": "Enjoy a vacation which is more than a cruise, a captivating adventure unlike any other. A rich mosaic of sights, from the sun-washed beaches of the Riviera to the magnificent antiquities of Rome. Relax and have fun as you sail to a mix of destinations with the loveliest features. It's a complete holiday.

All 'must see' sights covered.
Easy Travelling, Smooth Sailing - On a Cox & Kings holiday you can just relax and we'll take care of everything.
First Class Service - From location, service, to ambience, every detail is looked into, to ensure that your stay is an enjoyable one.
Great Meals - Stimulate your palate with a wide array of Indian dishes carefully selected and flavoured with authentic ingredients and spices.
Sightseeing That Takes Your Breath Away - Enjoy the scenic journey through Europe with its ever changing landscape - from bustling cosmopolitan cities to tranquil lakes and alpine mountains. We offer a terrific holiday value that's impossible to match!
Fabulous Optionals, Great Prices - You can design the holidays of your choice from the plethora of options before you.
Enjoy the Ocean: If watching the sea is relaxing, imagine doing so from a Jacuzzi.
Get Fit Onboard: You can do as much exercise as you want in the fitness facilities.
Spectacular Nights: Every night on a Pullmantur Cruise is a spectacular one with musicals, live music and theme parties in the Broadway Theatre.
Cuisine: An excellent cruise is inconceivable without excellent cuisine. The quality of the ingredients is essential for everything to turn out perfectly.
Spa del Mar: There is a Spa del Mar onboard every Pullmantur ship with a professional staff.Guided panoramic Highlight City Tour of Rome : Arch of Constantine, Piazza Venezia, Circus Maximus, Roman Forum, Trevi Fountain, Colosseum.
Hotels Info

City	Hotel Name
Onboard Cruise	
Breeze Of The Mediterranean Cruise Or SimilarServices of Cox & Kings Tour Manager or Local Representative.
An additional amount of INR 1,500 is to be compulsorily paid by way of "Secure your Booking Amount".
Optional & Add-On tours unless mentioned otherwise.
Cost of US $ 2,50,000 granted by the Reserve Bank of India under the Liberalised Remittance Scheme.
Any increase in the airfare / taxes / routing charged by the airlines for ticket (presently calculated on 14th Aug 2015)
Airline and Hotel surcharges (if applicable) during high / festive season to be paid extra per person.
Cost of extension of validity or deviation of your air ticket.
Any increase in Rate of Euro leading to an increase in Tour Cost coming into effect prior to departure. However, the rate prevailing on the given day of payment will apply.
Porterage at hotels, apartment, airports and seaports, tips, laundry, wines, mineral water, telephone charges, all items of personal nature and also food and drinks not forming part of the touring group's menu.
Medical test and Premium cost of your Overseas Travel Insurance policy valid for passengers above 70 years of age.
Anything not specifically mentioned in 'What Your Tour Price Includes' box.
Government Service Tax 4.50% on gross bill, effective from 1st June 2016.
Port Handling charges of Euro 190 per person.
Gratuities / Administration and Service Fee (To be paid directly on board the cruise15-0630-09",
		      "name": "Mediterranean Voyage - Summer 2016 Tour",
		      "telephone": "+91-9415285186"
		    }
		    </script>
			";i:5;N;}