a:6:{i:0;s:15434:"				<div class="h1"><h1>Andaman Package 3 Nights : 3 Nts Port Blair + Return Trip To Havelock Island</h1></div>
				<p class="breadcrumb ar uu small"><a href="https://www.grandindiatrip.com/" title="Home">Home</a> 
				
									<b class="ffv p2px">&rsaquo;</b><a href="https://www.grandindiatrip.com/tour-packages.htm" title="Tour Packages">Tour Packages</a>  			
									
				<b class="ffv p2px">&rsaquo;</b>Andaman Package 3 Nights : 3 Nts Port Blair + Return Trip To Havelock Island</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">111</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Duration </td>
						<td class="p5px pl0px vat">
						3 Nights / 4 Days 
						</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Destination Covered </td>
						<td class="p5px pl0px vat">Port Blair</td>
						</tr>
												<tr>
						<td class="b p5px w125px vat">Price (Starting From) </td>
						<td class="p5px pl0px vat">
						INR 8999 Per Person						</td>
						</tr>
												<tr>
						<td></td>
						<td>
						<p>
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="https://www.grandindiatrip.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Andaman Package 3 Nights : 3 Nts Port Blair + Return Trip To Havelock Island - 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="35121"/>
						</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/71722.jpg"><img src="https://ttw.wlimg.com/package-images/photo-small/dir_9/257644/71722.jpg"  width="150" height="150"    alt="Andaman Package 3 Nights : 3 Nts Port Blair + Return Trip To Havelock Island" title="Andaman Package 3 Nights : 3 Nts Port Blair + Return Trip To Havelock Island" /></a></p></div></li>
															</ul>
						</div>
						</td>
											</tr>
					</table>
					</div>
					<br />
					
					Andaman & Nicobar Islands, a group of 572 islands & islets spread like a broken chain of pearls over Bay of Bengal covering an area of 8249 sq.km. The archipelago of Andaman and Nicobar Islands celebrate serene solitude at its dense forests, exotic floral beds and stretches of silvery sand beaches. Over a distance of 780kms of ocean from North to South, the island, although a Union Territory of India, is very close to Rangoon (Burma), Phuket (Thailand), Malaysia & Sumatra. Andaman is graded as one of the ideal destination for availing leave travel concession to cover a long distance journey.Any Airfare & Train Fare<br />
Any Meals Other Than Those Mentioned Above<br />
All Optional Are Charged<br />
Any Portage At Airport And Hotels, Tips, Insurance, Wine , Mineral Water, Telephone Charges, Boating Charges, Entrance Fees And All Items Of Personal Nature<br />
Any Services Not Specifically Mentioned In The Inclusions<br />
Expenses Caused By Factors Beyond Our Control Like Rail And Flight Delays, Roadblocks, Vehicle Mal-Functions, Political Disturbances, Taxes Etc.01-0430-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 To Port Blair
								</p>
								<p class="aj">Our representative will meet and assist you at the Veer Savarkar Airport. Board the waiting vehicles, drive to your hotel and check in. First half of the day is at leisure. Later in the afternoon visit Cellular jail followed by light and sound show. The Cellular Jail has a pride of place in Indiaâs freedom struggle. Many a stalwart were imprisoned here. Declared a national memorial, this three storey prison constructed by Britishers in 1906, is a pilgrimage destination for freedom fighters. This colossal edifice has mutely witnessed the most treacherous of inhumane atrocities borne by the convicts, who were mostly freedom fighters. The day draws to a gentle close with the Sound and Light Show at the historic Cellular Jail which gives you a vivid experience of its strong association with the freedom fighters and their struggle for independence. Overnight stay at the Hotel.</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> Port Blair - Ross Island - North Bay Island (Coral Island)
								</p>
								<p class="aj">Today after breakfast embark on a day long three island cruise. One of the most sought after activities. It covers a panorama of seven arbours that include North Bay and Ross Island. It leaves a lasting impression. Visit Ross Island. Once the administrative headquarters of the British and capital of these Islands, the island is now under the Indian Navy. It stands now as a ruin of the bygone days with the old structures almost in debris. There is a small museum named Smritika, it holds photographs and the other antiques of the Britishers relevant to these islands. Thailand is famous for friendly flocks of Deer and lush green walking trails. North Bay, the water lovers may enjoy snorkelling or take a glass bottom boat ride (Optional on direct payment) in its shallow waters with a chance to see corals up close also has mesmerizing picnic spots with natural picturesque environments Return to the hotel. Overnight stay at the Hotel.</p>					
									<p><b>Meals : </b> B</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> Port Blair - Havelock Island - Port Blair
								</p>
								<p class="aj">Today after breakfast you will transfer to Jetty. Head to Havelock Island on board Cruise connecting the two islands! Havelock, about 54 kilometres northeast of Portblair, the Island is a hidden jewel. Few Indians know of this stunning beach destination in their own backyard while heading for Phuket (in Thailand) across the waters of Andaman Sea. Havelock is a serene tropical island encompassing about 86 square kilometres. Itâs clear waters are rated among the bestin the world for Snorkelling and scuba diving. Close to 1000 different species of marine life inhabit the waters of the Andaman Islands. Scuba divers can see nudi branches, sea slugs and snails, varieties of ghost pipe fish, jaw fish and a number of different crustaceans of all shapes and sizes. With its serene beaches, 40 meters visibility underwater, colorfulcoral reefs and âfar from the maddening crowdâ appeal, Havelock Island has emerged as a dream destination among discerning travellers Arrive at Havelock Jetty, you are met and assisted by Our representative. Board the waiting vehicles for trip to Radhanagar Beach (or Beach No. 7) is the jewel in the crown of Havelock Island. Located on the western side of the island, it stands away from the cluster. The glorious white sand beach shot to global fame when Time magazine (in 2004) rated it as the finest in Asia. With lush tropical forest rising on a hill to one side, the draw of this white sand beach has steadily grown in the legion of avid beach buffs. The popularity of this beach has triggered cruises from across the Andaman Sea. travellers cruise over a few days from Thailand to experience the magic of this beach in particular. A wide beach that runs over a few kilometres, Radhanagar is simply stunning. It lends itself to a variety of activities. Evening return to Port Blair. Overnight stay at the Hotel.</p>					
									<p><b>Meals : </b> B</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> Depart Port Blair - Airport Dropping
								</p>
								<p class="aj">Dropping to Airport with memories of an ultimate holiday at Andaman Islands.</p>
								</td>
								</tr>
								</table>					
								</div>						<br />
													<div class="headHr">
				            <p class="p7px b pl10px xlarge">Hotel Detail : </p>
				            </div>
															<div class="data lh13em p20px aj mb7px">
								<table class="w100 formTable bdr0 imgWidth">
								<tr>
								<td class="p10px"><p class="fr lh0">
								
																	<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_on.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_on.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_on.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																		<img class="vam" src="https://static.tourtravelworld.com/images/star_ratings_off.png" alt=""/>
																	
								</p>
								<div class="mb5px">
								<h2 class="dif b xxlarge">Havelockislandbeachresort</h2>
								</div>
								<p class="cb"></p>
								<p><b>Address :</b> Port Blair, Andaman & Nicobar Islands, India</p>
								<p><b>Facility :</b> </p>
								<div class="mt7px">
The Resort offers you its definite impeccable service through the Deluxe Cottages and Sea Facing suites Cottages, with a true service of luxurious Resort. The resort enchant your holiday into a memorable treasure that will last forever … Know More...	 	Savour your taste buds at Sea Dragon restaurant with global flavours, fresh ingredients by talented chefs. Sea dragon restaurant by HIBR takes you on a culinary magic carpet ride giving you the experience of mouth-watering delicacies. Know More...	 	From the green terraces of the resort to the sandy white beach we provide Pleasurable Pastimes and various water activities to enrich each and every stay of yours</div>
								</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="showZoomImage2" href="https://ttw.wlimg.com/hotel-package-images/photo-big/dir_9/257644/9192.jpg"><img src="https://ttw.wlimg.com/hotel-package-images/photo-small/dir_9/257644/9192.jpg"  width="150" height="78"    alt="havelock island beach resort" title="havelock island beach resort" class="bdr"  /></a></p></div></li>
																					</ul>
									</div>
									</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>Hotel</li>
																		<li>Sightseeing</li>
															</ul>
						<br />
												<p class="large b mb5px dif">Exclusions :</p> <ul><li>Any Airfare & Train Fare</li><li>
Any Meals Other Than Those Mentioned Above</li><li>
All Optional Are Charged</li><li>
Any Portage At Airport And Hotels, Tips, Insurance, Wine , Mineral Water, Telephone Charges, Boating Charges, Entrance Fees And All Items Of Personal Nature</li><li>
Any Services Not Specifically Mentioned In The Inclusions</li><li>
Expenses Caused By Factors Beyond Our Control Like Rail And Flight Delays, Roadblocks, Vehicle Mal-Functions, Political Disturbances, Taxes Etc.</li></ul><br />
												<p class="large b mb5px dif">Departure Cities with rates :</p>Hotel
Category
Period
Per Person
(on twin sharing)
Extra Adult
Extra Child
Silver Spring, (PortBlair)
01 Oct 2014	To 30 Apr 2015	Rs . 10599	Rs . 6399	Rs . 6399
Rose Valley Portblair Resort, (PortBlair)
01 Oct 2014	To 30 Apr 2015	Rs . 18199	Rs . 9899	Rs . 8799
Sinclairs Bay View, Port Blair, (PortBlair)
Luxury	01 Oct 2014	To 30 Apr 2015	Rs . 20599	Rs . 8499	Rs . 7999
Hotel Haywizz, (PortBlair)
Deluxe	01 Oct 2014	To 30 Apr 2015	Rs . 12099	Rs . 7899	Rs . 7499
 
	<br /><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. ~^#^~												</div>
												
						<div class="ac mb10px">
						<form name="frmpackagedetail" id="frmpackagedetail" method="post" action="https://www.grandindiatrip.com/enquiry-form-10002.htm">
						<input type="hidden" name="subject" value="Andaman Package 3 Nights : 3 Nts Port Blair + Return Trip To Havelock Island - 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="35121"/>
						</form>
						</div>
						
						";i:1;s:115:"Book Andaman Package 3 Nights : 3 Nts Port Blair + Return Trip To Havelock Island - 3 Nights / 4 Days Tour Packages";i:2;s:174:"book andaman package 3 nights : 3 nts port blair + return trip to havelock island - 3 nights / 4 days tour packages, beach and islands tour packages, port blair tour packages";i:3;s:233:"Book Andaman Package 3 Nights : 3 Nts Port Blair + Return Trip To Havelock Island - 3 Nights / 4 Days tour packages from Grand India Tours & Travels - Get attractive 3 Nights / 4 Days Beach and Islands  tour packages for  Port Blair.";i:4;s:1523:"
			<script type="application/ld+json">
		    {
		      "@context": "https://schema.org",
		      "@type": "TouristAttraction",
		      "address": {
		        "@type": "PostalAddress",
		         "addressRegion": "Port Blair"        
		                 },
		      "description": "Andaman & Nicobar Islands, a group of 572 islands & islets spread like a broken chain of pearls over Bay of Bengal covering an area of 8249 sq.km. The archipelago of Andaman and Nicobar Islands celebrate serene solitude at its dense forests, exotic floral beds and stretches of silvery sand beaches. Over a distance of 780kms of ocean from North to South, the island, although a Union Territory of India, is very close to Rangoon (Burma), Phuket (Thailand), Malaysia & Sumatra. Andaman is graded as one of the ideal destination for availing leave travel concession to cover a long distance journey.Any Airfare & Train Fare
Any Meals Other Than Those Mentioned Above
All Optional Are Charged
Any Portage At Airport And Hotels, Tips, Insurance, Wine , Mineral Water, Telephone Charges, Boating Charges, Entrance Fees And All Items Of Personal Nature
Any Services Not Specifically Mentioned In The Inclusions
Expenses Caused By Factors Beyond Our Control Like Rail And Flight Delays, Roadblocks, Vehicle Mal-Functions, Political Disturbances, Taxes Etc.01-0430-09",
		      "name": "Andaman Package 3 Nights : 3 Nts Port Blair + Return Trip To Havelock Island",
		      "telephone": "+91-9415285186"
		    }
		    </script>
			";i:5;N;}